从用户会话jackrabbit获取用户

问题描述:

我创建了哪个不属于管理员组的部分。希望从登录的用户会话中检索用户对象。从用户会话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

尝试通过更换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>