加入相关依赖
<!-- JWT相关 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency> 创建一个工具类JWT
package com.example.demo.tools;
import com.example.demo.model.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
/**
* JWT工具类
* 1.生成的token,是可以通过base64进行解密初明文信息
* 2.base64进行解密初明文信息,修改再进行编码,则会解密失败
* 3.无法作废已颁布的token,除非改秘钥
*/
public class JWTUtils {
/**
* 过期时间:一周
*/
private static final long EXPIRE = 60000 * 60 * 24 * 7;
/**
* 秘钥
*/
private static final String SECRET = "mll.dbc";
/**
* 令牌前缀
*/
private static final String TOKEN_PREFIX = "mll";
/**
* 谁颁布的
*/
private static final String SUBJECT = "mll";
/**
* 生成令牌
* @param user
* @return
*/
public static String genJsonWebToken(User user) {
String token = Jwts.builder().setSubject(SUBJECT)
.claim("head_img",user.getImg())
.claim("id",user.getId())
.claim("phone",user.getPhone())
.setIssuedAt(new Date())
//当前时间
.setExpiration(new Date())
//过期时间
.setExpiration(new Date(System.currentTimeMillis()+EXPIRE))
//加密方式
.signWith(SignatureAlgorithm.HS256,SECRET).compact();
token = TOKEN_PREFIX+token;
return token;
}
/**
* 校验JWT方法
* @param token
* @return
*/
public static Claims checkJWT(String token){
try {
Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX,"")).getBody();
return claims;
}catch (Exception e){
return null;
}
}
}
搞一个测试类给你看看 test2
@Test
public void test2(){
User user = new User();
user.setPhone("15907826081");
user.setImg("654684");
user.setId(2);
String token = JWTUtils.genJsonWebToken(user);
System.out.println(token);
Claims claims = JWTUtils.checkJWT(token);
System.out.println(claims.get("head_img"));
System.out.println(claims.get("id"));
System.out.println(claims.get("phone"));
} 输出内容
mlleyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJtbGwiLCJoZWFkX2ltZyI6IjY1NDY4NCIsImlkIjoyLCJwaG9uZSI6IjE1OTA3ODI2MDgxIiwiaWF0IjoxNjE0MDA0MzM2LCJleHAiOjE2MTQ2MDkxMzZ9.1VV3BYpB2jAX2F-aDQKYM3fno_OEBKc3FU2ZWM46hLQ
654684
2
15907826081
最后搞一个接口代码给你看!
@PostMapping("register")
public String register(@RequestBody User user){
System.out.println(user.getPhone());
System.out.println(user.getId());
System.out.println(user.getImg());
String token = JWTUtils.genJsonWebToken(user);
return token;
}
@PostMapping("login")
public HashMap login(@RequestBody User user){
Claims claims = JWTUtils.checkJWT(user.getToken());
HashMap<String,String> map = new HashMap<String,String>();
map.put("head_img", (String) claims.get("head_img"));
map.put("id", (Integer) claims.get("id")+"");
map.put("phone", (String) claims.get("phone"));
return map;
} 本文作者为DBC,转载请注明。