Spring Security --- formLogin配置

news/2024/10/11 16:34:14/

目录

环境准备

配置自定义登录表单页面

配置登录成功的跳转页面方式

配置登录失败的跳转页面方式

前端表单参数获取

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配置类代码示例


http://www.ppmy.cn/news/48260.html

相关文章

水平居中、垂直居中的几种方法

水平居中的方法: 若是针对inline, 内联块inline-block, 内联表inline-table, inline-flex元素及img,span,button等元素 父元素设置 text-align:center; 绝对定位;弹性布局;grid网格布局 不定宽块状元素 设置 margin:auto; 绝对定…

第二章:uniapp整合axios之真机测试两问题

第二章:uniapp整合axios之真机测试两问题 上一章节,笔者编写了uniapp整合axios并实现前后端跨域请求的方案,完成了这些基本配置后,在浏览器端的测试基本是可以完成了,但是当笔者将程序运行到手机时,却出现…

springboot mybatis-plus 对接 sqlserver 数据库 批处理的问题 批量更新添加数据 方案三

问题: 在对接 sqlserver数据库的时候 主子表 保存的时候 子表批量保存 使用的 mybatis-plus提供的 saveOrUpdateBatch saveBatch 这两个方法 但是 报错 报错内容为 : com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。 框…

springboot web项目统一时区方案

背景 springboot项目国际化中,会遇到用户选择的时间和最终存到数据库的时间不一致,可能就是项目开发和部署时的时区没有处理好,导致时间转换出现了问题。 先了解时区都有哪些: 1.GMT:Greenwich Mean Time 格林威治…

Kubernetes Operator开发

案例一 Traefik Operator开发 1.kubebuilder 创建项目 2.Crontroller开发与部署 开发环境准备 kubebuilder 介绍 CRD的开发与部署 Crontroller开发与部署 Operator功能设计 借助operator完成 和企业内部注册中心打通 这里以Traefiketcd的模式为例进行演示说明 在这里etcd p…

1.2和1.3、GCC

1.2和1.3、GCC 1.2和1.3、GCC1.2.1、什么是GCC1.2.2、编程语言的发展1.2.3、GCC工作流程1.2.4、gcc和g的区别1.2.5、GCC常用参数选项实际操作①接下来进行预处理操作(test.c为需要预处理的源代码,test.i为要生成的目标代码)②汇编操作&#x…

多线程基础

1.多线程基础概念 多线程:让程序同时做多件事情 多线程作用:提高效率 并发:在同一时间,有多个指令在单个cpu上交替执行 并行:在同一时刻,有多个指令在多个cpu上同时执行 2.多线程的实现 (1)继承Thread类…

电脑卡顿反应慢怎么处理?电脑提速,4个方法!

案例:电脑卡顿反应慢怎么处理? 【快帮帮我!我的电脑现在越用越卡了,有时候光是打开一个文件都要卡好几分钟,我真的太难了,有什么可以加速电脑反应速度的好方法吗?万分感谢!】 随着…