Spring Security 3:是否可以查看哪个AuthenticationProvider已对会话进行了身份验证?

时间:2010-09-09 05:28:36

标签: java spring authentication spring-security

我有一个带有多个AuthenticationProviders的AuthenticationManager。这非常有效,第一个可以验证身份验证的AP验证用户,如果没有,则拒绝用户。

现在我有一个更特殊的情况,我需要找出哪个AuthenticationProvider验证了成功验证的用户。我似乎无法找到一种可以以稳定可靠的方式完成这项工作的方法。

我可以想象一些创造性的黑客攻击(例如,交错自己的AuthenticationProvider实例总是无法进行身份验证,但可以帮助推断出哪个是最后一次看到的AuthenticationProvider),但这真的不是重点。有官方的方法吗?

2 个答案:

答案 0 :(得分:2)

我没有尝试过,但您可能会挂钩成功验证时触发的事件并获取您要查找的信息

AuthenticationSuccessEvent :表示身份验证成功的应用程序事件。 InteractiveAuthenticationSuccessEvent :表示交互式身份验证成功。

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

InteractiveAuthenticationSuccessEvent,有property告诉你触发事件的类

答案 1 :(得分:0)

为什么不将这些信息与UserDetails内容一起存储在当前会话中?