我有一个带有多个AuthenticationProviders的AuthenticationManager。这非常有效,第一个可以验证身份验证的AP验证用户,如果没有,则拒绝用户。
现在我有一个更特殊的情况,我需要找出哪个AuthenticationProvider验证了成功验证的用户。我似乎无法找到一种可以以稳定可靠的方式完成这项工作的方法。
我可以想象一些创造性的黑客攻击(例如,交错自己的AuthenticationProvider实例总是无法进行身份验证,但可以帮助推断出哪个是最后一次看到的AuthenticationProvider),但这真的不是重点。有官方的方法吗?
答案 0 :(得分:2)
我没有尝试过,但您可能会挂钩成功验证时触发的事件并获取您要查找的信息
AuthenticationSuccessEvent :表示身份验证成功的应用程序事件。 InteractiveAuthenticationSuccessEvent :表示交互式身份验证成功。
InteractiveAuthenticationSuccessEvent,有property告诉你触发事件的类
答案 1 :(得分:0)
为什么不将这些信息与UserDetails内容一起存储在当前会话中?