2010-07-28 5 views
3

Grails에서 Spring Security의 구현을 마무리하고 있습니다. 이것은 스프링 보안에 대한 나의 첫 번째 구현입니다 .- 이전에는 Acegi를 사용했습니다.Grails Spring Security 인증 동안 Principal 받기

다음은 내가 가지고있는 문제입니다. Acegi에서 나는 onInteractiveAuthenticationSuccessEvent() 콜백에서 인증 된 사용자를 검색 할 수있었습니다.이 콜백은 SecurityContextHolder에 액세스하고 사용자 원칙을 얻은 다음 데이터베이스에서 '라이브'사용자를 얻습니다. Spring Security에서는 SecurityContextHolder가 사용 가능한 것으로 보이지 않습니다. 액세스하려고하면 그러한 객체에 대해 낮은 수준의 Grails가 불만을 제기합니다.

그래서, 내 질문 :

  • 가 어떻게

  • onInteractiveAuthenticationSuccessEvent

    에서 SecurityContextHolder에 액세스 할 수 있습니다 또는 인증 된 원리를 얻기의 더 나은 방법이?

감사합니다, 댄

답변

3

가져 오기를 업데이트 할 필요가있을 수 있습니다 - 그것은 3 봄 보안이 변경 - 지금 org.springframework.security.core.context.SecurityContextHolder입니다하지만 방법이 변경되지 않았습니다.

그러나이 appCtx 변수를 사용하여 이벤트 콜백에서 액세스 할 수 springSecurityService 사용하는 청소기입니다 :

onInteractiveAuthenticationSuccessEvent = { e, appCtx -> 
    def principal = appCtx.springSecurityService.principal 
    def user = User.get(principal.id) 
} 
+0

감사 Burt- 당신이 제공 한 여러 반응을 주셔서 감사합니다. Grails 개발팀에 호기심이 있습니까? 아니면 그들과 긴밀히 협력하고 있습니까? – ecodan

+0

예, 저는 Grails 팀의 SpringSource에서 일합니다. –

관련 문제