應用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){

}
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);
}

}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM