加入相关依赖
<!-- 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,转载请注明。