Spring安全认证 – 有关文档的问题
我在Spring Security JavaDoc中查看此页面:
http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/web/authentication/AbstractAuthenticationProcessingFilter.html#attemptAuthentication(javax.servlet.http.HttpServletRequest,%20javax .servlet.http.HttpServletResponse )
这条线是什么意思?
返回null,表示身份validation过程仍在进行中。 在返回之前,实现应该执行完成该过程所需的任何其他工作。
我正在开发一个允许用户登录并收集其他数据的表单。 我不想使用默认的UsernamePasswordAuthenticationFilter,因为我将丢失表单中填写的所有其他数据。
从登录表单捕获更多数据的常用方法是使用自定义WebAuthenticationDetails。
有关如何执行此操作的信息,请参阅此主题 。
这条线是什么意思?
它通常意味着如果从覆盖的attemptAuthentication()
方法返回null,则filter链将被破坏,并且在UsernamePasswordAuthenticationFilter
之后不会调用其他filter。 之后,您负责完成身份validation过程,而不是链中的其他filter。
您可以查看AbstractAuthenticationProcessingFilter#doFilter()
方法源代码行:201。
换句话说,返回null
将花费您额外的工作。
如果要仅覆盖attemptAuthentication()
,则应在不成功的身份AuthenticationException
上抛出AuthenticationException
。
如果要从attemptAuthentication()
返回null
,还应该重写doFilter()
并自己处理null
结果。