【发布时间】:2021-12-09 06:57:56
【问题描述】:
最近在研究 Spring security 的 Authentication provider。
在 authenticate() 方法中,文档说,“如果 AuthenticationProvider 无法支持对传递的 Authentication 对象的身份验证,则可能返回 null。在这种情况下,下一个 AuthenticationProvider 支持呈现的身份验证课程将被尝试。“
我们还有另一种方法 supports() 指示此提供程序是否支持身份验证类型。
据我所知,"AuthenticationManager" 首先调用 supports() 来检查提供者是否支持这种类型。然后调用 authenticate() 方法。因此,据我了解,仅在提供者支持时才调用身份验证。
所以,我的问题是“如果提供者支持这种类型的身份验证,那么它为什么要从身份验证 () 中返回 null?为什么文档说 ”如果AuthenticationProvider 无法支持对传递的 Authentication 对象进行身份验证” ??? 它应该不总是支持它吗?(因为我们通过supports()检查了它的兼容性。)
你能举一个提供者需要返回 null 的例子吗?
提前致谢。
【问题讨论】:
标签: java spring spring-boot spring-security