Spring Security 3: возможно ли увидеть, какой AuthenticationProvider аутентифицировал сеанс? - PullRequest
2 голосов
/ 09 сентября 2010

У меня есть менеджер аутентификации с несколькими провайдерами аутентификации.Это очень хорошо работает, первая точка доступа, которая может выполнить аутентификацию, при аутентификации пользователя аутентифицируется, а если никто не может, пользователю отказано.

Теперь у меня есть немного более особый случай, и мне нужно выяснить, какой AuthenticationProviderаутентифицировал пользователя, который был аутентифицирован успешно.Кажется, я не могу найти способ, которым это можно сделать стабильным и надежным способом.

Я могу представить некоторые творческие хаки (например, чередование экземпляров собственного AuthenticationProvider, который всегда не проходит аутентификацию, но который может помочьсделайте вывод, который был последним AuthenticationProvider, который был замечен), но это действительно не главное.Есть ли официальный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2010

Я не пробовал, но вы могли бы подключиться к событиям, которые запускаются при успешной аутентификации, и получить информацию, которую вы ищете

AuthenticationSuccessEvent : Событие приложения, которое указывает на успешную аутентификацию. InteractiveAuthenticationSuccessEvent : указывает, что интерактивная аутентификация прошла успешно.

http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/event/package-summary.html

InteractiveAuthenticationSuccessEvent, имеет свойство , которое сообщает вам класс, вызвавший событие

0 голосов
/ 09 сентября 2010

Почему бы просто не сохранить эту информацию вместе с материалами UserDetails в текущем сеансе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...