80 lines
2.1 KiB
Java
80 lines
2.1 KiB
Java
package com.adc.da.util;
|
|
|
|
import io.jsonwebtoken.Claims;
|
|
import io.jsonwebtoken.ExpiredJwtException;
|
|
import io.jsonwebtoken.Jwts;
|
|
import io.jsonwebtoken.SignatureAlgorithm;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* token 工具类
|
|
*
|
|
* @author ch
|
|
* @version 1.0.0
|
|
* @since 1.0.0
|
|
* <p>
|
|
* Created at 2020/7/30 2:23 下午
|
|
*/
|
|
@Component
|
|
public class JwtSysUtils {
|
|
|
|
// 过期时间
|
|
private static long expire = 6048000;
|
|
// 秘钥
|
|
private static String secret = "HSyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9";
|
|
|
|
/**
|
|
* 创建一个token
|
|
*
|
|
* @param userId
|
|
* @return
|
|
*/
|
|
public String generateToken(String userId) {
|
|
Date now = new Date();
|
|
Date expireDate = new Date(now.getTime() + expire);
|
|
return Jwts.builder().setHeaderParam("type", "JWT").setSubject(userId).setIssuedAt(now)
|
|
.setExpiration(expireDate).signWith(
|
|
SignatureAlgorithm.HS512, secret).compact();
|
|
}
|
|
|
|
/**
|
|
* 解析token
|
|
*/
|
|
public Claims getClaimsByToken(String token) {
|
|
Claims claims;
|
|
try {
|
|
claims = Jwts.parser()
|
|
.setSigningKey(secret) // 设置标识名
|
|
.parseClaimsJws(token) //解析token
|
|
.getBody();
|
|
} catch (ExpiredJwtException e) {
|
|
claims = e.getClaims();
|
|
}
|
|
return claims;
|
|
}
|
|
|
|
public String getUserIdByToken(){
|
|
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
String user = "";
|
|
if(attributes != null){
|
|
HttpServletRequest request = attributes.getRequest();
|
|
if(StringUtils.isNotBlank(request.getHeader("token"))){
|
|
Claims claim = getClaimsByToken(request.getHeader("token"));
|
|
user = claim.getSubject();
|
|
}else {
|
|
user = "chenchunmei";
|
|
}
|
|
}
|
|
return user;
|
|
}
|
|
|
|
}
|