大佬文章
JWT详解_baobao555#的博客
使用hutool实现
JWT (hutool-码云(gitee.com))
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
import cn.hutool.core.date.DateUnit;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
import com.ticknet.face_to_face_back.common.utils.ServletUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class TokenService {
@Value("${token.header}")
private String header;
@Value("${token.secret}")
private String secret;
@Value("${token.expireTime}")
private int expireTime;
public String createToken(Long userId , String userName, String nickName) {
byte [] key = secret.getBytes();
return JWT.create()
.setPayload("userId", userId)
.setPayload("userName", userName)
.setPayload("nickName", nickName)
.setExpiresAt(new Date(System.currentTimeMillis()+ expireTime * DateUnit.MINUTE.getMillis()))
.setIssuedAt(new Date())
.setSigner(JWTSignerUtil.hs256(key))
.sign();
}
public boolean verify() {
String token = ServletUtils.getRequest().getHeader(header);
System.out.println("验证的token:" + token);
byte [] key = secret.getBytes();
try {
return JWT.of(token).setKey(key).validate(0);
} catch (Exception e) {
return false;
}
}
public Integer getUserIdByToken() {
String token = ServletUtils.getRequest().getHeader(header);
final JWT jwt = JWTUtil.parseToken(token);
return (Integer)jwt.getPayload("userId");
}
}
使用jjwt实现
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
import com.mszlu.blogapi.entity.SysUser;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JWTUtils {
private static final String jwtToken = "123456Mszlu!@#$$";
public static String createToken(SysUser sysUser){
Map<String,Object> claims = new HashMap<>();
claims.put("userId",sysUser.getId());
claims.put("account",sysUser.getAccount());
claims.put("nickName",sysUser.getNickname());
claims.put("avatar",sysUser.getAvatar());
JwtBuilder jwtBuilder = Jwts.builder()
.signWith(SignatureAlgorithm.HS256, jwtToken)
.setClaims(claims)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000));
String token = jwtBuilder.compact();
return token;
}
public static Map<String, Object> checkToken(String token){
try {
Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token);
return (Map<String, Object>) parse.getBody();
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}