需要的依赖:
工具类:
/**
* JWT 工具类
* 解决token签发 与 token认证的问题。
*/
public class JWTUtil {
/\*\*
\* token签发的有效期
\*/
public static final int TOKEN\_EXPIRE=1000\*60\*30;
/\*\*
\* token加密算法的盐
\*/
public static final String TOKEN\_KEY="xxxxx";
/\*\*
\* 生成一个token
\*/
public static String newToken(UserVO userVO){
//产生token
String token= Jwts.builder()
.setSubject(userVO.getNickname())
//签发时间
.setIssuedAt(new Date())
//过期时间
.setExpiration(new Date(System.currentTimeMillis()+TOKEN\_EXPIRE))
//携带的数据
.claim("user", JSONObject.toJSONString(userVO))
//签名 + 盐
.signWith(SignatureAlgorithm.HS256,TOKEN\_KEY.getBytes())
.compact();
return token;
}
/\*\*
\* 解析token
\*/
public static UserVO checkToken(String token){
Claims body=null;
try {
body = Jwts.parser().setSigningKey(TOKEN\_KEY.getBytes())
.parseClaimsJws(token).getBody();
}catch(Exception e){
//解析出现问题,返回null
return null;
}
Object userJSONString=body.get("user");
UserVO user=JSONObject.parseObject((String)userJSONString,UserVO.class);
return user;
}
// public static void main(String[] args) {
// UserVO userVO=new UserVO();
// userVO.setId(1L);
// userVO.setUsername("zhangsan");
// String token = newToken(userVO);
// userVO=checkToken(token);
// System.out.println(userVO);
// }
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章