【问题标题】:Spring Security Authentication - Question about the DocumentationSpring Security Authentication - 关于文档的问题
【发布时间】:2011-09-21 03:16:40
【问题描述】:

我正在查看 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,表示 认证过程仍在 进步。回国前, 实施应执行任何 完成所需的额外工作 过程。

我正在制作一个允许用户登录并收集其他数据的表单。我不想使用默认的 UsernamePasswordAuthenticationFilter,因为这样我会丢失表单中填写的所有其他数据。

【问题讨论】:

    标签: java spring spring-mvc spring-security


    【解决方案1】:

    从登录表单中捕获更多数据的常用方法是使用自定义 WebAuthenticationDetails。

    有关如何执行此操作的信息,请参阅 this thread

    【讨论】:

      【解决方案2】:

      这条线是什么意思?

      这通常意味着如果您从覆盖的 attemptAuthentication() 方法返回 null,过滤器链将被破坏,并且在 UsernamePasswordAuthenticationFilter 之后不会调用进一步的过滤器。之后,您负责完成身份验证过程,而不是链上的其他过滤器。

      您可以查看AbstractAuthenticationProcessingFilter#doFilter()方法源代码行:201。

      换句话说,返回null 将花费您额外的工作。

      如果您只想覆盖 attemptAuthentication(),您应该在身份验证失败时抛出 AuthenticationException

      如果您想从attemptAuthentication() 返回null,您还应该覆盖doFilter() 并自己处理null 结果。

      【讨论】:

        猜你喜欢
        • 2014-07-04
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        • 2017-11-21
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 2020-04-25
        相关资源
        最近更新 更多