Spring安全认证 - 看起来像无限循环,但它的工作原理。如何?

时间:2017-03-02 20:52:18

标签: spring-security

它是如何运作的? 我用安全和百里香的弹簧靴写了一个示例应用程序。 正如[教程]:http://www.thymeleaf.org/doc/articles/springsecurity.html显示只需要创建控制器和登录页面。但...

在安全配置中,片段为

    loginPage("/login.html")

然后在控制器中有/ login的请求映射,如

    @RequestMapping("/login.html")
       public String login() {
       return "login.html";
    }

然后在thymeleaf页面中有动作映射,如

    <form th:action="@{/login.html}" method="post">

所以..当尝试访问受限页面的人被重定向到登录页面时,这意味着显示了login.html。然后在填写表单后,用户单击按钮并触发操作,该操作将映射到再次返回login.html的控制器上。看起来像一个循环。但它的确有效。如何??

1 个答案:

答案 0 :(得分:0)

我想我在这里看到了混乱。在最新版本的Spring Security中,默认情况下甚至可以鼓励登录页面登录处理URL 是相同的地址(但他们不需要)成为)。由于HTTP方法不同,这是可能的。

  • 当重定向到登录页面时,使用GET请求检索页面。身份验证过滤器会看到这一点,但会将请求传递给Spring MVC和控制器,因为它是一个GET请求。

  • 提交表单时,用户名和密码将在POST请求中发送。验证过滤器拦截此请求,因为它是POST,执行身份验证并根据结果采取操作。在这种情况下,请求不会转发给控制器。