应用JWT进行token的生成

1、增加maven依赖

<!--JWT依赖-->
      <dependency>
          <groupId>io.jsonwebtoken</groupId>
          <artifactId>jjwt</artifactId>
          <version>0.7.0</version>
      </dependency>

2、添加JWT工具类

package com.cm.weixin.pay.utils;

import com.cm.weixin.pay.domain.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

/**
* jwt工具类
*/
public class JwtUtils {

public static final String SUBJECT ="cm";
public static final long EXPIRE = 1000*60*60*24*7;//过期时间是一周
public static final String APPSECRET ="cm168";//秘钥

/**
* 生成jwt 加密方法
* @param user
* @return
*/
public static String geneJsonWebToken(User user){
if(user==null || user.getId()==null || user.getName()==null || user.getHeadImg()==null){
return null;
}
String token=
Jwts.builder().setSubject(SUBJECT)
.claim("id",user.getId())
.claim("name",user.getName())
.claim("img",user.getHeadImg())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis()+EXPIRE))
.signWith(SignatureAlgorithm.HS256,APPSECRET).compact();
return token;

}

/**
* 校验token
* @param token
* @return
*/
public static Claims checkJwt(String token){
try {
final Claims claims=Jwts.parser().setSigningKey(APPSECRET).parseClaimsJws(token).getBody();
return claims;
}catch (Exception e){

扫描二维码关注公众号,回复: 11218888 查看本文章

}
return null;
}
}

3、测试调用用例(User实体类自己定义)

package com.cm.weixin.pay;

import com.cm.weixin.pay.domain.User;
import com.cm.weixin.pay.utils.JwtUtils;
import io.jsonwebtoken.Claims;
import org.junit.Test;

import static com.cm.weixin.pay.utils.JwtUtils.checkJwt;

public class CommonTest {
@Test
public void testGeneJwt(){
User user = new User();
user.setId(9999);
user.setName("cm");
user.setHeadImg("java程序猴");
String token = JwtUtils.geneJsonWebToken(user);
System.out.println(token);

Claims claims=JwtUtils.checkJwt(token);
if(claims !=null){
String name = (String) claims.get("name");
System.out.println(name);
}

}
}

猜你喜欢

转载自www.cnblogs.com/java-cxh/p/12910245.html