Skip to content

Commit a652365

Browse files
colorful3juzi214032
authored andcommitted
重载生成 token 的相关方法,让方法的 identity 参数支持传入 String 类型
1 parent 6935f4d commit a652365

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

core/src/main/java/io/github/talelin/core/token/DoubleJWT.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
* access、refresh token
1919
*
2020
* @author pedro@TaleLin
21+
* @author colorful@TaleLin
2122
*/
2223
public class DoubleJWT {
2324

@@ -72,6 +73,16 @@ public String generateToken(String tokenType, long identity, String scope, long
7273
.sign(algorithm);
7374
}
7475

76+
public String generateToken(String tokenType, String identity, String scope, long expire) {
77+
Date expireDate = DateUtil.getDurationDate(expire);
78+
return builder
79+
.withClaim("type", tokenType)
80+
.withClaim("identity", identity)
81+
.withClaim("scope", scope)
82+
.withExpiresAt(expireDate)
83+
.sign(algorithm);
84+
}
85+
7586
public Map<String, Claim> decodeAccessToken(String token) {
7687
DecodedJWT jwt = accessVerifier.verify(token);
7788
checkTokenExpired(jwt.getExpiresAt());
@@ -111,16 +122,30 @@ public String generateAccessToken(long identity) {
111122
return generateToken(TokenConstant.ACCESS_TYPE, identity, TokenConstant.LIN_SCOPE, this.accessExpire);
112123
}
113124

125+
public String generateAccessToken(String identity) {
126+
return generateToken(TokenConstant.ACCESS_TYPE, identity, TokenConstant.LIN_SCOPE, this.accessExpire);
127+
}
128+
114129
public String generateRefreshToken(long identity) {
115130
return generateToken(TokenConstant.REFRESH_TYPE, identity, TokenConstant.LIN_SCOPE, this.refreshExpire);
116131
}
117132

133+
public String generateRefreshToken(String identity) {
134+
return generateToken(TokenConstant.REFRESH_TYPE, identity, TokenConstant.LIN_SCOPE, this.refreshExpire);
135+
}
136+
118137
public Tokens generateTokens(long identity) {
119138
String access = this.generateToken(TokenConstant.ACCESS_TYPE, identity, TokenConstant.LIN_SCOPE, this.accessExpire);
120139
String refresh = this.generateToken(TokenConstant.REFRESH_TYPE, identity, TokenConstant.LIN_SCOPE, this.refreshExpire);
121140
return new Tokens(access, refresh);
122141
}
123142

143+
public Tokens generateTokens(String identity) {
144+
String access = this.generateToken(TokenConstant.ACCESS_TYPE, identity, TokenConstant.LIN_SCOPE, this.accessExpire);
145+
String refresh = this.generateToken(TokenConstant.REFRESH_TYPE, identity, TokenConstant.LIN_SCOPE, this.refreshExpire);
146+
return new Tokens(access, refresh);
147+
}
148+
124149

125150
/***
126151
* 获得令牌的验证器

core/src/test/java/io/github/talelin/core/token/DoubleJWTTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,21 @@ public void decodeAccessToken1() throws InterruptedException {
7070
}
7171
}
7272

73+
@Test
74+
public void decodeAccessToken2() throws InterruptedException {
75+
DoubleJWT jwt = new DoubleJWT("secret", 1000, 2000);
76+
String token = jwt.generateAccessToken("Colorful");
77+
assertNotNull(token);
78+
log.info(token);
79+
Thread.sleep(1000);
80+
try {
81+
Map<String, Claim> claimMap = jwt.decodeAccessToken(token);
82+
System.out.println(claimMap);
83+
} catch (JWTVerificationException e) {
84+
assertEquals("token is expired", e.getMessage());
85+
}
86+
}
87+
7388
@Test
7489
public void decodeRefreshToken1() throws InterruptedException {
7590
DoubleJWT jwt = new DoubleJWT("secret", 1000, 2000);
@@ -105,6 +120,14 @@ public void generateRefreshToken() {
105120
log.info(token);
106121
}
107122

123+
@Test
124+
public void generateRefreshToken1() {
125+
DoubleJWT jwt = new DoubleJWT("secret", 1000, 2000);
126+
String token = jwt.generateRefreshToken("Colorful");
127+
assertNotNull(token);
128+
log.info(token);
129+
}
130+
108131
@Test
109132
public void generateTokens() {
110133
DoubleJWT jwt = new DoubleJWT("secret", 10000, 20000);
@@ -118,6 +141,19 @@ public void generateTokens() {
118141
Assert.assertEquals(TokenConstant.ACCESS_TYPE, claimMap.get("type").asString());
119142
}
120143

144+
@Test
145+
public void generateTokens1() {
146+
DoubleJWT jwt = new DoubleJWT("secret", 10000, 20000);
147+
Tokens tokens = jwt.generateTokens("Colorful");
148+
assertNotNull(tokens.getAccessToken());
149+
assertNotNull(tokens.getRefreshToken());
150+
log.info("{}", tokens);
151+
152+
Map<String, Claim> claimMap = jwt.decodeAccessToken(tokens.getAccessToken());
153+
Assert.assertEquals(TokenConstant.LIN_SCOPE, claimMap.get("scope").asString());
154+
Assert.assertEquals(TokenConstant.ACCESS_TYPE, claimMap.get("type").asString());
155+
}
156+
121157
@Test
122158
public void getAccessVerifier() {
123159
DoubleJWT jwt = new DoubleJWT("secret", 1000, 2000);

0 commit comments

Comments
 (0)