文章目录
运行环境
- Windows 11
- JDK8
- IDEA 2021 专业版
- Visual Studio Code 2022
一、SpringBoot 整合 JWT 案例
1.1 后端部分
项目结构:
1.1.1 引入 Maven 依赖
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bbs.uni</groupId>
<artifactId>uni</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>uni</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.19.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其中关于 JWT 的依赖为 :
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.19.2</version>
</dependency>
1.1.2 定义实体类
枚举类 HttpStatusEnum 用于标识响应的状态码以及消息
package com.bbs.uni.enums;
public enum HttpStatusEnum {
SUCCESS(200, "请求成功!"),
FAIL(500, "服务器内部出错."),
NOT_FOUND(404, "找不到所指定的资源."),
NOT_AUTH(401, "权限不足.");
private final int code;
private final String msg;
private HttpStatusEnum(int code, String msg){
this.code = code;
this.msg = msg;
}
public int code(){
return code; }
public String msg() {
return msg; }
}
1)R.java 用于响应前端请求,关于返回数据的请求都是直接返回 R 对象,R 即 Response响应的缩写
package com.bbs.uni.entity;
import com.bbs.uni.enums.HttpStatusEnum;
import lombok.Data;
import java.io.Serializable;
/**
* 封装响应对象
* @param <T>
*/
@Data
public class R<T> implements Serializable {
private Integer code; // 响应的代码
private String msg; // 响应的信息
private T data; // 响应的数据
public R(){
}
public R(int code, String message, T data){
this.code = code;
this.setMsg(message);
this.data = data;
}
public R(int code, T data){
this.code = code;
this.data = data;
}
public R