java的jwt+拦截器校验token获取用户信息
最近换工作,发现自己只会crud准备加强一下。结合网上资源写了一个用jwt生成并且校验token、校验token是在拦截器里面的,还有对异常的封装,响应体返回的封装,先写代码再总结一下项目中实际可以优化的地方。
异常封装和响应体封装都在上一节内容,地址:https://blog.csdn.net/yechuanjiang/article/details/120413850?spm=1001.2014.3001.5501
这里写的是生成token和用拦截器校验token,和用token获取登陆用户,希望到这里的兄弟都有一个思想,代码实现多种做样,实现目标的方法多种多样
第一个类试是jwt的工具类,用于生成token、校验token的正确性和有效期、用token获取当前登陆用户id
package com.example.jwt2021921.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.exceptions.TokenExpiredException;
import com.example.jwt2021921.entity.User;
import lombok.extern.log4j.Log4j2;
import java.util.Date;
/**
* @Auther: 叶川江
* @Date: 2021/9/18 12:25
* @Description: 个人v: ycj940729
*/
@Log4j2
public class GetToken {
//加密密钥
private static final String SECRET = "Axmk89Li3Aji9M";
//创建token
public static String createToken(User user) {
String token="";
Date date = new Date(System.currentTimeMillis() + 20*1000);
token= JWT.create()
.withExpiresAt(date)//token有效期
.withSubject(user.getId().toString())//保存用户id,user类自己i而一个
.sign(Algorithm.HMAC256(SECRET));//加密