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

Spring Security框架简单搭建

Spring Security是Spring生态系统中一个重要的安全框架,专注于为Java应用程序提供全面的认证(Authentication)和授权(Authorization)功能。
最初我们写登录模块的时候就是从前端发起请求,然后servlet接收请求并通过service进行逻辑处理,访问数据库获取账号密码比对信息,最后返回密匙token。这样会产生输入验证、敏感信息泄露、会话管理、访问控制和加密措施等方面的安全问题。
Spring Security就是为了解决传统Servlet开发中存在的安全问题而诞生的。
Spring Security中文文档:https://springdoc.cn/spring-security/index.html
1.在web项目中搭建一个Spring Security框架需要引入依赖
在这里插入图片描述
这时候可以测试一下,在访问controller会让登录,在项目启动的时候有给密码,我们通过密码登录才可以访问数据。
在这里插入图片描述
在这里插入图片描述
2.这样就已经引入了Spring Security框架,接下来就是配置了。在Spring Security中,过滤器链遵循Servlet规范,通过在应用启动时注册一系列的过滤器来拦截HTTP请求。它主要通过一系列过滤器的链式调用来实现对Web请求的安全控制。我们可以自定义配置,除了/user/login外,其他一律验证
在这里插入图片描述

3.这时候需要再配置类中配置一个AuthenticationManager实例,它里面有一个authenticate方法,我们需要使用它进行验证。
在这里插入图片描述
在这里插入图片描述
4.在service层调用authenticate方法传入一个authentication对象,DaoAuthenticationProvider会调用UserDetailsService接口的loadUserByUsername方法,所以们还需要一个实现了UserDetailsService接口的类重写loadUserByUsername方法(第5步)
在这里插入图片描述

5.首先需要准备一个UserDetails对象,这个对象包含了用户的基本信息和权限信息,当用户访问受保护的资源时,Spring Security会检查用户是否具有相应的权限。
在这里插入图片描述

6.实现UserDetailsService接口,UserDetailsService是Spring Security中用于加载用户特定数据的接口。它包含一个名为loadUserByUsername()的方法,我们在这个方法自定义认证逻辑,最后返回一个UserDetails对象。
在这里插入图片描述
7.自定义过滤器,拦截并验证其他所有请求路径
在这里插入图片描述
这里只是实现了最简单的一个认证搭建,之后还有权限的操作。
8.开启权限
在配置类上添加@EnableMethodSecurity注解开启权限验证
在这里插入图片描述
9.在需要添加权限的方法上添加@PreAuthorize(“hasAnyAuthority(‘get’)”)注解
在这里插入图片描述
10.设置权限列表信息
在这里插入图片描述


http://www.kler.cn/a/517189.html

相关文章:

  • 人脸识别打卡系统--基于QT(附源码)
  • Android SystemUI——系统快捷设置面板(十三)
  • 双目立体校正和Q矩阵
  • Linux系统下速通stm32的clion开发环境配置
  • 【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )
  • 微信小程序压缩图片
  • 智能手机“混战”2025:谁将倒下而谁又将突围?
  • AI评估新范式:从性能至信任的转变
  • 【python写个可以运行的2048小游戏】
  • 分布式存储的技术选型之HDFS、Ceph、MinIO对比
  • css之多边形 clip-path
  • 使用Visual Studio Code配置C/C++开发环境的全面指南
  • 计算机网络三张表(ARP表、MAC表、路由表)总结
  • MATLAB中alphanumericsPattern函数用法
  • windows下部署安装 ELK,nginx,tomcat日志分析
  • 利用Java爬虫获取eBay商品详情:代码示例与教程
  • 解锁跨平台通信:Netty、Redis、MQ和WebSocket的奇妙融合
  • snippets router pinia axios mock
  • 【整理】js逆向工程
  • linux如何修改密码,要在CentOS 7系统中修改密码
  • 【Uniapp-Vue3】页面和路由API-navigateTo及页面栈getCurrentPages
  • VSCode+Continue实现AI辅助编程
  • 数据表中的数据查询
  • Chromium 132 编译指南 Mac 篇(六)- 编译优化技巧
  • Java 基于 SpringBoot 的校园外卖点餐平台微信小程序(附源码,部署,文档)
  • Android笔记:android 动态设置backgroundTint