2014-09-19 85 views
0

我創建了哪個不屬於管理員組的部分。希望從登錄的用戶會話中檢索用戶對象。從用戶會話jackrabbit獲取用戶

使用管理員創建的用戶:

org.apache.jackrabbit.api.security.user.User applicationUser = 
    accessController.createUser(user.getUsername(), user.getPassword()); 

登錄與新創建的用戶:

Session session = repository.login(
    new SimpleCredentials(userInstance.getUsername(), 
    userInstance.getPassword().toCharArray())); 

試圖檢索用戶對象:

UserManager userManager = ((JackrabbitSession)adminSession).getUserManager(); 
User repoUser = (User) userManager.getAuthorizable(userName); 

userManager是空的,因爲會話創建來自用戶不屬於管理員組

我發現的唯一方法是模擬用戶會話管理和檢索用戶對象。

但是,有沒有其他方式檢索User對象沒有模擬?

使用Jackrabbit 2.6.0和JCR 2.0。

謝謝。

+0

的UserManager不應該是零。如果有問題,那麼它應該拋出異常。 – TedTrippin 2014-09-24 15:12:50

+0

你的評論是無關緊要的。我正在尋找的是任何替代,而不是userManager創建問題。 – techie2k 2014-09-25 08:02:03

+0

你錯了,它完全相關。 UserManager是獲取用戶的正確方法。由於您沒有顯示所有代碼,因此您的代碼中顯然存在問題,我們無法看到。 – TedTrippin 2014-09-25 10:16:52

回答

0

嘗試通過更換simple.SimpleSecurityManager ......改變的repository.xml,它的工作原理:

<Security appName="Jackrabbit"> 
 
\t 
 
\t \t <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" workspaceName="security"> 
 
\t \t \t <!-- 
 
\t \t \t workspace access: 
 
\t \t \t class: FQN of class implementing the WorkspaceAccessManager interface 
 
\t \t \t --> 
 
\t \t \t <!-- <WorkspaceAccessManager class="..."/> --> 
 
\t \t \t <!-- <param name="config" value="${rep.home}/security.xml"/> --> 
 
\t \t </SecurityManager> 
 
\t \t 
 
\t \t <AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager"> 
 
\t \t \t <!-- <param name="config" value="${rep.home}/access.xml"/> --> 
 
\t \t </AccessManager> 
 

 
\t \t <LoginModule class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule"> 
 
\t \t \t <!-- 
 
\t \t \t \t anonymous user name ('anonymous' is the default value) 
 
\t \t \t --> 
 
\t \t \t <param name="anonymousId" value="anonymous"/> 
 
\t \t \t <!-- 
 
\t \t \t \t administrator user id (default value if param is missing is 'admin') 
 
\t \t \t --> 
 
\t \t \t <param name="adminId" value="admin"/> 
 
\t \t </LoginModule> 
 
\t </Security>