抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

学习Spring Security的笔记

-1.注

本文是根据up主
三更草堂
写的,内容和他记的课程笔记差不多,大同小异(x)

他讲的比较不错,可以去看看~

0.简介

Spring Security是Spring家族中的一个安全管理框架。相比与另外-个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。
​ 一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相毗与SpringSecurity, Shiro的上手更加的简单。
​ 一般Web应用的要进行认证授权
认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
授权:经过认证后判断当前用户是否有权限进行某个操作
​ 而认证和授权也是SpringSecurity作为安全框架的核心功能。

1.创建

1.1 准备

设置父工程,添加依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<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>
</dependencies>
创建controller
1
2
3
4
5
6
7
@RestController
public class HelloController{
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}

2.认证

2.1登陆流程

image-20221107171732190

2.2解决思路

登录
①自定义登录接口
调用ProviderManager的方法进行认证如果认证通过生成jwt
把用户信息存入redis中
②自定义UserDetailsService
在这个实现列中去查询数据库
校验:
定义jwt认证过滤器
获取token
解析token获取其中的userid
从redis中获取用户信息
存入SecurityContextHolder

2.3准备工作
添加依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--fastjson依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.33</version>
</dependency>
<!--jwt依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>

评论