2014-09-19 2 views
0

Я создал, который не является частью группы admin. Требуется получить пользовательский объект из сеанса входа в систему.Получить пользователя из сеанса пользователя 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 является нулевым, так как сессия создана от пользователя не входит в состав admin group.

Единственный способ, которым я нахожу, - олицетворять сеанс пользователя администратору и извлекать объект пользователя.

Но есть ли другой способ получить объект User без олицетворения?

Использование Jackrabbit 2.6.0 и JCR 2.0.

Спасибо.

+0

userManager не должен быть пустым. Если есть проблема, тогда он должен выдать исключение. – TedTrippin

+0

Ваш комментарий не имеет значения. Я искал любую альтернативу, а не проблему создания userManager. – techie2k

+0

Вы ошибаетесь, это совершенно актуально. UserManager - это правильный способ получить пользователя. У вас явно есть проблема в коде, который мы не видим, так как вы не указали весь свой код. – TedTrippin

ответ

0

попытаться изменить repository.xml, заменив simple.SimpleSecurityManager ..., это работает:

<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>

Смежные вопросы