2012-07-24 86 views
0

在調試使用Spring Security ACL遇到的一些問題時,我查看了「BasicLookupStrategy」使用的SQL語句。我在這裏複製它以供參考:Spring Security的BasicLookupStrategy中使用的SQL語句是否正確?

public final static String DEFAULT_SELECT_CLAUSE = "select acl_object_identity.object_id_identity, " 
    + "acl_entry.ace_order, " 
    + "acl_object_identity.id as acl_id, " 
    + "acl_object_identity.parent_object, " 
    + "acl_object_identity.entries_inheriting, " 
    + "acl_entry.id as ace_id, " 
    + "acl_entry.mask, " 
    + "acl_entry.granting, " 
    + "acl_entry.audit_success, " 
    + "acl_entry.audit_failure, " 
    + "acl_sid.principal as ace_principal, " 
    + "acl_sid.sid as ace_sid, " 
    + "acli_sid.principal as acl_principal, " 
    + "acli_sid.sid as acl_sid, " 
    + "acl_class.class " 
    + "from acl_object_identity " 
    + "left join acl_sid acli_sid on acli_sid.id = acl_object_identity.owner_sid " 
    + "left join acl_class on acl_class.id = acl_object_identity.object_id_class " 
    + "left join acl_entry on acl_object_identity.id = acl_entry.acl_object_identity " 
    + "left join acl_sid on acl_entry.sid = acl_sid.id " 
    + "where ("; 

我的問題是關於上述語句中「acli_sid」表的用法。 AFAICT,Spring安全ACL不需要任何具有該名稱的表,所以我想知道是否有我在這裏失蹤的東西。任何幫助是極大的讚賞。

感謝, Raghu

回答

0

的表稱爲acl_sid。您發佈的SQL查詢使用acli_sid作爲一個別名:

left join acl_sid acli_sid on acli_sid.id 

您可以輕鬆地檢查其運行示例應用程序與ACL數據庫架構的工作原理。