当前位置: 首页 > news >正文

SpringSecurity+Mysql数据库实现用户安全登录认证

  Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式,还是响应式web应用程序都完美支持,现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说,SpringSecurity功能更加复杂而且更加强大

1.SpringBoot整合security

   pom中加入依赖

<!--security-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency><!--lomback--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency><!--thymeleaf模板引擎--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.6.5</version></dependency><!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><!--阿里驱动类--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.5</version>
</dependency>

当引入security依赖后,启动项目再访问时,会被要求登录,我们账号输入user,密码在控制台

bd2c81f2b90c099d2c4bb720fbdb6a53.png

 

 

 b0c20af1a65486abccc689a78d23f255.png

 成功登录。

 

登录成功后我们可以访问Controller里的资源

a255e7b609d1d27025625f74a905199f.png

 在SecurityConfig里配置拦截路径,以及放行路径,

         9f286f1d8b67cc5222731c5be4feeffd.png

 19a0d6247a1d36c272cd5953e869b4db.png

 在Config里注入BCryptPasswordEncoder,Hbase密码加密类

eea67d72eea77f9ff70b6e869fc39511.png

 

接下来实现LoadUserByUserName,它会根据name去数据库查找比对密码,成功则放行,失败拦截

33e0b8ee19e6fc62f5035d6ed21ad3d0.png

 注意数据表里的password字段要经过BCrt类密码加密,才能比对成功

f12982b900151a6d4a18388bf2fd86cf.png

 

 

最后测试,打开浏览器输入url地址,会跳转到登录页面进行登录,输入账号,密码,成功登陆

 

4c2cd65023c8432842a24fae073ec126.png

 如果账号密码比对失败或者断网,会跳转到对应的error页面或者提示

cb31fbe47567562995376679f2f1e014.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL入门学习-运维与架构.主从复制
  • Shell 编程的高级技巧和实战应用
  • 《雅思口语真经总纲1.0》话题实战训练笔记part1——5. Bus or taxi
  • 等待唤醒机制两种实现方法-阻塞队列
  • 【OpenCV C++20 学习笔记】图像缩放-高斯金字塔
  • Stable Diffusion绘画 | 文生图-高分辨率修复-Hires.fix
  • 图的同态Graph Homomorphism与同构Graph Isomorphism
  • ESP IDF 4.4工程迁移到IDF5最新注意事项
  • 从核心到边界:六边形、洋葱与COLA架构的深度解析
  • uni-app中使用支付宝扫码插件并且在真机调试时使用(详细教程)
  • 3.11.样式迁移
  • Linux查看进程和进程号的几种方式
  • 数据结构第十讲:二叉树OJ题
  • 什么是人工智能 (AI)
  • 【MySQL】常用数据类型
  • 【Linux系统编程】快速查找errno错误码信息
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • django开发-定时任务的使用
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Flannel解读
  • Git的一些常用操作
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • WebSocket使用
  • 从0到1:PostCSS 插件开发最佳实践
  • 给github项目添加CI badge
  • 老板让我十分钟上手nx-admin
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 你不可错过的前端面试题(一)
  • 普通函数和构造函数的区别
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用docker-compose进行多节点部署
  • 收藏好这篇,别再只说“数据劫持”了
  • 阿里云服务器购买完整流程
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $.each()与$(selector).each()
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (done) 两个矩阵 “相似” 是什么意思?
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (办公)springboot配置aop处理请求.
  • (笔试题)分解质因式
  • (多级缓存)缓存同步
  • (过滤器)Filter和(监听器)listener
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (六)vue-router+UI组件库
  • (十一)c52学习之旅-动态数码管
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Oracle存储过程编写经验和优化措施