Spring Security 6.0系列【1】基础篇之概述及入门案例

news/2024/11/19 20:35:22/

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot 版本 3.0.4

本系列Spring Security 版本 6.0.2

源码地址:https://gitee.com/pearl-organization/study-spring-security-demo

文章目录

    • 导读
    • 安全框架
    • Spring Security
      • 概述
      • 发展历史
    • 入门案例
      • 1. 创建工程
      • 2. 运行
      • 3. 测试

导读

本系列基于最新Spring Boot 3.0 + Spring Security 6.0版本,由浅入深,从实战到源码分析,详细讲解各种 Spring Security 的使用技巧,适用于初学和进阶使用者。

本系列学习路线:
在这里插入图片描述

安全框架

开发软件系统时,Web 安全非常重要,JAVA安全框架,大家听得最多的应该是Spring Security Apache Shiro。国产的有Sa-Token。

这些框架底层的原理都大同小异,只要学会一个,其他的上手就非常容易👊👊👊

一个功能完善的安全框架,一般需要支持以下特性:

  • 认证(Authentication):验证用户的身份
  • 授权(Authorization):验证用户的访问和权限,对已认证用户进行访问控制
  • 加密:对重要信息进行加密处理,比如密码加密
  • 会话管理:对用户认证、会话信息进行存储管理
  • 防御攻击:对常见的网络攻击进行防御

Spring Security

GitHub地址
官方文档地址

Spring Security 6.0提供了许多新功能,并且需要JDK 17

概述

Spring Security Spring 组织提供的一个开源安全框架,目前最新的版本为6.0.2,基于Spring 开发,所以非常适合在Spring Boot中使用。

Spring Security提供认证、授权、抵御常见攻击等功能,将认证授权分离,并提供了扩展点。对保护命令式(Spring MVC)和响应式(Spring Webfulx)应用程序有一流的支持,是保护基于Spring开发的应用程序的事实标准。

认证Spring Security 身份验证提供了全面的支持,身份验证是验证进行访问的主体身份。常用方法是要求用户输入用户名密码。一旦执行身份验证,就知道身份并可以执行授权

授权授权指的是验证某个用户是否有权限执行某个操作。在系统中不同用户所具有的权限是不同的。比如对某条数据来说,有的用户只能进行读取,而有的用户可以进行修改。一般系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

发展历史

Spring 社区在成立后,2003年底开始考虑开发安全框架,最初是Acegi,大约一年后,Acegi Security成为Spring Framework的正式子项目。

2006年5月Acegi Security发布了1.0版, 于2007年底更名为Spring Security

如今Spring Security拥有一个强大且活跃的开源社区,当前最新版本为6.0.2

入门案例

1. 创建工程

Spring Boot 3.0系列【3】基础篇之使用Spring Initializr快速创建项目

使用Spring Initializr快速创建一个Spring Boot 3.0项目,可以直接选择引入Spring Security依赖:
在这里插入图片描述
POM依赖坐标如下所示:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Spring Boot 提供的 Security 启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency></dependencies>

spring-boot-starter-securitySpring Boot 官方提供的启动器,提供了自动配置和依赖包管理:
在这里插入图片描述
主要包含以下几个子模块:

  • spring-security-core: 核心包,包含核心认证和访问权限功能类和接口、远程支持和基本配置API
  • spring-security-webWEB框架集成包,包含过滤器和相关的web安全基础设施代码
  • spring-security-config:包含 security 命名空间解析代码和Java配置代码

2. 运行

启动程序,UserDetailsServiceAutoConfiguration自动配置类,会生成一个默认随机登录密码(因为目前没有配置用户,配置后不会生成):
在这里插入图片描述
DefaultSecurityFilterChain默认的过滤器链会打印出所有的Filter过滤器:
在这里插入图片描述

3. 测试

编写访问接口:

@RestController
public class TestController {@GetMapping("/test")public Object test() {return "Hello Security";}
}

访问测试接口,此时被重定向到默认登录页面:
在这里插入图片描述

用户名输入user,密码输入控制台生成的随机登录密码,登录成功后重定向到访问接口:
在这里插入图片描述
也可以在yml中配置一个默认的登录用户及密码:

spring:security:user:name: testpassword: 123456

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

相关文章

Spring注册Bean的方式

文章目录一、xml方式注册Bean二、ConfigurationBean注册Bean三、ComponentScan注册Bean1. 使用XML文件配置包扫描2. 使用注解配置包扫描3. ComponentScans源码4. ComponentScan源码5. ComponentScan value includeFilters6. ComponentScan value excludeFilters7. Componen…

web自动化测试:Selenium+Python基础方法封装(建议收藏)

01、目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架构的自动化来说&#xff0c;B/S有着其无法忽视的诸多优势&#xff0c;从行业发展趋、研发模式特点、测试工具支持&…

TOSICA:一站式可解释细胞类型注释

从参考数据集到查询数据集的一致性标签转移是单细胞研究的基础。与传统的注释方法相比&#xff0c;基于深度学习的方法速度更快&#xff0c;自动化程度更高。基于自编码器架构的一系列单细胞分析工具已经开发出来&#xff0c;但这些工具难以在深度和可解释性之间取得平衡。作者…

2023年天津天狮学院 专升本专业课考前准备及考试时间

天津天狮学院2023年“高职升本科”专业课考前温馨提示 注意啦注意啦&#xff0c;天津天狮学院2023年高职升本科专业课考试定于2023年3月25日上午9:30—11:40举行。为了考试顺利进行小招准备了相关注意事项&#xff0c;以供各位考生参考&#xff0c;熟悉一下环境&#xff0c;以增…

Android 自定义View 之 Mac地址输入框

Mac地址输入框前言正文一、什么是View?二、什么是自定义View三、自定义View① 构造方法② XML样式③ 测量④ 绘制1. 绘制方框2. 绘制文字⑤ 输入1. 键盘布局2. 键盘接口3. 键盘弹窗4. 显示键盘5. 处理输入四、使用自定义View五、源码前言 在日常工作开发中&#xff0c;我们时长…

SpringBoot实战(十三)集成 Admin

目录一、简介二、搭建 springboot-admin 管理服务1.Maven 依赖2.application.yml3.添加 EnableAdminServer4.启动服务&#xff0c;查看页面三、搭建 springboot-admin-client 客户端服务1.Maven 依赖2.application.yml3.启动服务&#xff0c;查看页面四、搭配 Eureka 使用1.搭建…

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景 有时候&#xff0c;我们拿到需求&#xff0c;没仔细看当前分支是什么&#xff0c;就开始撸代码了。完成了需求或者写到一半发现开发错分支了。 比如此时新需求代码都在master分支上&#xff0c;提交必然是不可能的&#xff0c;所有修改还是要在新建分支上进行&#x…

Vue初入,了解Vue的发展与优缺点

作者简介&#xff1a;一名计算机萌新、前来进行学习VUE,让我们一起进步吧。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;我叫于豆豆吖的主页 前言 从本章开始进行Vue前端的学习&#xff0c;了解Vue的发展&#xff0c;以及背后的故事。 一.vue介…