1.添加依赖
首先需要添加jwt对应的依赖。
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
2.添加配置
JWT由三部分构成,分别是 header, payload 和 signature, 其中前两部分中的参数涉及到的一些参数需要用户自定义,因此我们需要将这些参数放到配置文件中,这样后续就可以动态修改配置。
# 密钥
jwt.secret = 6L6T5LqG5L2g77yM6LWi5LqG5LiW55WM5Y+I6IO95aaC5L2V44CC
# 签名算法:HS256,HS384,HS512,RS256,RS384,RS512,ES256,ES384,ES512,PS256,PS384,PS512
jwt.header.alg = HS256
#jwt签发者
jwt.payload.iss = picacho
#jwt过期时间(单位:毫秒)
jwt.payload.exp = 60 * 60 * 1000 * 24 * 7
#jwt接收者
jwt.payload.aud = picacho_1
3.创建JWT配置类
创建config包,在该包下创建JWT对应的配置类。
import lombok.Data;
@Data
public class JwtHeader {
private String alg;
private String typ;
}
import lombok.Data;
@Data
public class JwtPayload {
private String iss;
private String exp;
private String sub;
private String aud;
}
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "jwt")
public class JwtProperties {
private String secret;
private JwtHeader header;
private JwtPayload payload;
}
这里通过配置文件的属性值来为jwt进行属性值的配置。
4.创建JWT工具类
创建JWTUtil类,在里面创建generalSecretKey方法来生成密钥,生成的过程需要使用 JWT的方法SecretKeySpec来生成密钥,该密钥在创建JWT和验证 JWT 的时候都会用到且相同。
@Component
public class JWTUtil {
@Resource
JwtProperties jwtProperties;
/**
* 由字符串生成加密key
* @return
*/
private SecretKey generalKey() {
// 本地的密码解码
byte[] encodedKey = Base64.decodeBase64(jwtProperties.getSecret());
// 根据给定的字节数组使用AES加密算法构造一个密钥
SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
return key;
}
}
创建生成JWT方法。
/**
* 创建jwt
* @param subject
* @return
* @throws Exception
*/
public String createJWT(String subject) throws Exception {
// 生成JWT的时间
long nowTime = System.currentTimeMillis();
Date nowDate = new Date(nowTime);
// 生成签名的时候使用的秘钥secret
SecretKey key = generalKey();
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
int expireTime = 0;
try {
expireTime =(int) se.eval(jwtProp

本文介绍了如何在项目中集成JWT,包括添加依赖、配置参数、创建JWT配置类和工具类,以及用户注册和登录的实现。在注册过程中,创建了DTO类以统一前后端数据交互,登录时生成并返回token,最后展示了如何验证token的有效性。
最低0.47元/天 解锁文章

1026

被折叠的 条评论
为什么被折叠?



