spring security前后端分离登录 (springsecurity只允许一处登录)

Spring Security框架默认的登录页如下图所示。

springsecurity只允许一处登录,springsecurity死循环

这个界面元素太少,况且不易去调整,也不满足日常的场景。所以,大多数情况下,我们需要自定义登录页。

其实,自定义登录页也非常简单,只需要一个登录页面、一个Controller、Spring Security配置稍微调整下,就可以了。

登录页面

我们采用Spring Security框架默认的用户名、密码参数名、filterProcessUrl等。

<form action="/login" method="post" th:action="@{/login}" th:method="post">
    <div>
            <input type="text" name="username" placeholder="用户名">
    </div>
    <div>
            <input type="password" name="password" placeholder="密码">
    </div>
    <button type="submit">登录</button>
</form>

Controller

controller也比较简单。

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

配置调整

只需在原来的配置基础上,加上 loginPage 设置项并放开权限即可。

http.formLogin().loginPage("/login").permitAll()

演示

启动工程,访问首页 http://localhost:8080/springsecuritylearning/index,系统跳转到了我们自定义的登录页。

springsecurity只允许一处登录,springsecurity死循环

输入用户名、密码后,正常展示首页。

springsecurity只允许一处登录,springsecurity死循环

源码

github

https://github.com/liuminglei/SpringSecurityLearning/tree/master/02

gitee

https://gitee.com/xbd521/SpringSecurityLearning/tree/master/02