2015-02-04 9 views
0

오크 저장소를 설정하는 중입니다. 기본 admin 사용자를 사용할 때 모든 것이 잘 작동하지만 UserManager를 사용하여 새 계정을 설정하려고하면 로그인 실패 예외가 발생하거나 대체 저장소 설정을 사용하여 사용자를 만들 수 있지만 로그인 할 때 해당 사용자를 사용하여 session.getUserID은 null을 반환합니다.Apache Oak를 사용한 사용자 관리

방법 1, 수율의 LoginException이 :

Map<String, Object> userParams = getSecurityProviderUserParams(); 
ConfigurationParameters config = ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME, ConfigurationParameters.of(userParams)));   
SecurityProvider sp = new SecurityProviderImpl(config); 
uc = new UserConfigurationImpl(sp); 
ConfigurationParameters cp = uc.getParameters(); 

QueryEngineSettings qes = new QueryEngineSettings(); 
QueryIndexProvider qip = new ReferenceIndexProvider(); 
contentRepository = new ContentRepositoryImpl(ns, new CommitRateLimiter(), "csmp", qes, qip, sp); 
contentSession = contentRepository.login(new SimpleCredentials("admin", "admin".toCharArray()), null); 
Root localRoot = contentSession.getLatestRoot(); 
um = uc.getUserManager(localRoot, NamePathMapper.DEFAULT); 
um.createUser("boswelrp", "testpass"); 
repo = new Jcr(new Oak(ns)).createRepository(); 

그리고 로그인 할 사용 : 응용 프로그램이 이미 확보

oakRepo.login(username, password); 

, 그래서 정말 달성하고자하는 모든이에 로그인하는 것입니다 createBy/modifiedBy 필드를 자동으로 채울 수 있습니다.

+0

이 질문은 [너무 광범위] (http://stackoverflow.com/help/on-topic)입니다. – jurgemaister

+0

감사합니다. 제 의도는 약간 명확합니다. – raymondboswel

답변

1

운 좋게도 나는 오크 메일 링리스트에서 대답을 찾았습니다.

session = repo.login(new SimpleCredentials("admin", "admin".toCharArray())); 

if(session instanceof JackrabbitSession) 
{ 
    UserManager um = ((JackrabbitSession) session).getUserManager(); 
}