从用户会话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。
谢谢。
答
尝试通过更换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>
的UserManager不应该是零。如果有问题,那么它应该抛出异常。 – TedTrippin 2014-09-24 15:12:50
你的评论是无关紧要的。我正在寻找的是任何替代,而不是userManager创建问题。 – techie2k 2014-09-25 08:02:03
你错了,它完全相关。 UserManager是获取用户的正确方法。由于您没有显示所有代码,因此您的代码中显然存在问题,我们无法看到。 – TedTrippin 2014-09-25 10:16:52