получение принципала во время аутентификации Grails Spring Security - PullRequest
3 голосов
/ 28 июля 2010

Я заканчиваю реализацию Spring Security в Grails. Это моя первая реализация в Spring Security - ранее я использовал Acegi.

Вот проблема, с которой я столкнулся. В Acegi я смог получить аутентифицированного пользователя в обратном вызове onInteractiveAuthenticationSuccessEvent (), получив доступ к SecurityContextHolder, получив принцип пользователя, а затем получив «живого» пользователя из базы данных. В Spring Security SecurityContextHolder, по-видимому, недоступен - когда я пытаюсь получить к нему доступ, я получаю жалобы низкого уровня от Grails о том, что такой метод для такого и такого объекта отсутствует.

Итак, мои вопросы:

  • Как получить доступ к SecurityContextHolder из onInteractiveAuthenticationSuccessEvent

  • Или есть лучший способ получить аутентифицированный принцип?

Спасибо, Dan

1 Ответ

3 голосов
/ 28 июля 2010

Вам может потребоваться обновить импорт - он изменился с Spring Security 2 на 3 - теперь он org.springframework.security.core.context.SecurityContextHolder, но методы не изменились.

Но удобнее использовать springSecurityService, который доступен изобратный вызов события с использованием переменной appCtx:

onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
   def principal = appCtx.springSecurityService.principal
   def user = User.get(principal.id)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...