登录
①自定义登录接口
调用ProviderManager
的方法进行认证 如果认证通过生成jwt
把用户信息存入redis
中【userId
作为Key,用户信息作为Value】
②自定义UserDetailsService
【因为原本这个接口的实现类是在内存中查询用户信息,不符合我们的要求,所以需要我们自己去实现它来自定义】在这个实现类中去查询数据库
校验
【校验的话,需要我们自己去自定义一个过滤器】
①定义Jwt
认证过滤器
获取token
解析token获取其中的userid
从redis
中获取用户信息【如果每次请求都查询数据库就很浪费时间】
存入SecurityContextHolder
引入依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.security</groupId> <artifactId>SpringSecurity-test</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.31</version> </dependency> <!--jwt依赖--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> </dependency> </dependencies> </project>
标签:登录,实现,spring,boot,springframework,认证,org,starter From: https://www.cnblogs.com/ixtao/p/17629965.html