课程名称:SpringBoot 在线协同办公小程序开发 全栈式项目实战
课程章节:JWT工具类
课程讲师: 神思者
课程内容:
JWT的Token
要经过加密才能返回给客户端,包括客户端上传的Token
,后端项目需要验证核实。于是我们需要一个JWT工具类,用来加密Token
和验证Token
的有效性。
我建议大家把密钥和过期时间定义到SpringBoot配置文件中,然后再值注入到JavaBean中,这样维护起来比较方便。
在com.example.emos.wx.config.shiro
中创建JwtUtil
类。
package com.example.emos.wx.config.shiro;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.example.emos.wx.exception.EmosException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@Slf4j
public class JwtUtil {
//密钥
@Value("${emos.jwt.secret}")
private String secret;
//过期时间(天)
@Value("${emos.jwt.expire}")
private int expire;
public String createToken(int userId) {
Date date = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, expire).toJdkDate();
Algorithm algorithm = Algorithm.HMAC256(secret); //创建加密算法对象
JWTCreator.Builder builder = JWT.create();
String token = builder.withClaim("userId", userId).withExpiresAt(date).sign(algorithm);
return token;
}
public int getUserId(String token) {
try {
DecodedJWT jwt = JWT.decode(token);
return jwt.getClaim("userId").asInt();
} catch (Exception e) {
throw new EmosException("令牌无效");
}
}
public void verifierToken(String token) {
Algorithm algorithm = Algorithm.HMAC256(secret); //创建加密算法对象
JWTVerifier verifier = JWT.require(algorithm).build();
verifier.verify(token);
}
}
课程收获:
今天课程开始初步进入SpringBoot 在线协同办公小程序开发 全栈式项目实战的学习,工欲善其事必先利其器,我们见天开始进行开发环境的准备,今天创建了SSH连接以用来准备接下来一个月的开发,希望打卡可以坚持下去,提升下自己的实战能力和全栈式项目的了解和开发。