jjwtJava 中简单使用
jjwtJava 中简单使用
jjwtJava 中简单使用

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.example.fei.service;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;


/**
* 参考资料:
* https://github.com/jwtk/jjwt
* https://stormpath.com/blog/jwt-java-create-verify
*/
@Component
public class TokenService {

private final static String myApiKeySecret = "fei_Secret_123456"; // 这里写入你的Secret

/**
* 创建 token
* @return {}
*/
public String createToken() {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
Date exp = new Date(nowMillis + 1000 * 30); // 过期时间 30秒
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; // 签名算法

JwtBuilder builder = Jwts.builder()
.setId("fei123") // 置唯一编号
// .setIssuedAt(now) //设置签发日期
// .setExpiration(exp) // 设置过期时间
// .setAudience("iot")
// .setIssuer("fei") // 设置发行人
.setSubject( "fei_setSubject" )
.claim("userName", "username_01")
.claim("userPwd", "123456")
.signWith(signatureAlgorithm, myApiKeySecret); // 设置签名 使用HS256算法,并设置SecretKey(字符串)

return builder.compact();
}

/**
* 校验 token 是否正确
* @param jwt String 用createToken方法中的返回值
* @return {}
*/
public Boolean parseJWT(String jwt) {
try {
Claims claims = Jwts.parser()
.setSigningKey(myApiKeySecret)
.parseClaimsJws(jwt)
.getBody();

Object userName = claims.get("userName");
Object userPwd = claims.get("userPwd");
String subject = claims.getSubject();

System.out.println(userName.toString());
System.out.println(userPwd.toString());
System.out.println(subject);

return true;
} catch (Exception e) {
System.out.println("Token格式有误");
return false;
}
}
}

jjwt官方文档
jwt-demo