目录
环境准备
配置自定义登录表单页面
配置登录成功的跳转页面方式
配置登录失败的跳转页面方式
前端表单参数获取
CustomWebSecurityConfigurerAdapter配置类代码示例
-
环境准备
- 创建springboot项目
- 引入spring security框架
- 引入thymeleaf模板引擎
-
配置自定义登录表单页面
- 1-自定义login.html页面
- 2-Controller层显示login.html页面的前端控制器
- 3-CustomWebSecurityConfigurerAdapter配置类设置
- 在配置类中设置请求需要登录认证
- 在配置类中设置请求放行
- 需要在自定义配置类中放行自定义登录页面的url放行, 让用户匿名可以访问登录页面
- 不然所有的请求都需要登录认证,都需要跳转到登录页面,登录页面也需要跳转到登录页面,这就有死循环了
- 需要在自定义配置类中放行自定义登录页面的静态资源访问放行, 让用户匿名可以访问静态资源
- 4-测试
- 除了/showLogin之外所有的请求都会自动跳转到自定义登录页面, 要求用户先登录认证
-
配置登录成功的跳转页面方式
- 1-自定义home.html页面,登录成功之后跳转到home.html页面
- 2-Controller层显示home.html页面的前端控制器
- 3-CustomWebSecurityConfigurerAdapter配置类设置
- 4-测试
- 点击立即登录成功之后,页面刷新一下又跳转到登录页面,为什么?
- 原因: spring security框架默认开启了csrf
- 在配置类中关闭csrf
- 不关闭csrf,在login.html页面上添加csrf.token的参数也能解决
- 启动项目, 访问http://localhost:8080,使用账号:admin和密码:123456登录,登录成功,页面跳转成功
-
配置登录失败的跳转页面方式
- 1-自定义error_page.html页面,登录失败之后跳转到error_page.html页面
- 2-Controller层显示home.html页面的前端控制器
- 3-CustomWebSecurityConfigurerAdapter配置类设置
- 4-测试
- 启动项目, 访问http://localhost:8080,使用账号:admin和密码:123123登录,密码错误,跳转到默认的登录异常页面
- 密码错误,页面一闪还是在默认的登录页面;怎么回事?
- 原因: /errPage路由需要登录认证
- 处理方法: 在配置类中将/errPage路由放行,允许用户匿名访问
-
前端表单参数获取
- 如果前端用户在定义login页面的时候,用户名和密码的dom元素的name属性没有设置成username和password,那会怎么样?
- spring security还能正常获取到参数进行登录认证么?那肯定是不可以的
- 通过修改login.html表单,token获取
-
CustomWebSecurityConfigurerAdapter配置类代码示例