Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit 83c5ef9

Browse files
authored
fix(JWTToken): sign secret move to properties (#42)
1 parent 3e24474 commit 83c5ef9

5 files changed

Lines changed: 49 additions & 15 deletions

File tree

backend/doc/deploy.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
![](image/配置文件.PNG)
3131

32+
务必在application-prod.properties中设置jwt.sign.secret
33+
3234
2 打包
3335

3436
![](image/打包.png)

backend/src/main/java/org/apache/iotdb/admin/tool/JJwtTool.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,36 +24,59 @@
2424
import io.jsonwebtoken.Jwts;
2525
import io.jsonwebtoken.SignatureAlgorithm;
2626
import lombok.extern.slf4j.Slf4j;
27+
import org.springframework.boot.context.properties.ConfigurationProperties;
28+
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.util.StringUtils;
2730

31+
import java.util.ArrayList;
2832
import java.util.Date;
33+
import java.util.List;
2934

3035
/** date:2022/12/6 author:yzf project_name:backend */
3136
@Slf4j
37+
@Configuration
38+
@ConfigurationProperties(prefix = "jwt.sign")
3239
public class JJwtTool {
33-
private static String secret =
34-
"HSyJ0eXAiOiJKV1QasdfffffffSd3g8923402347523fffasdfasgwaegwaegawegawegawegawetwgewagagew"
35-
+ "asdf23r23DEEasdfawef134t2fawt2g325gafasdfasdfiLCJhbGciOiJIUzI1NiJ9";
40+
41+
private static List<String> jwtCache = new ArrayList<>();
42+
private static String secret;
43+
44+
public String getSecret() {
45+
return secret;
46+
}
47+
48+
public void setSecret(String payload) {
49+
secret = payload;
50+
}
3651

3752
public static String generateToken(User user) {
3853
log.info("user=" + user.toString());
3954
Date now = new Date();
4055
// Calendar instance = Calendar.getInstance();
4156
// instance.add(Calendar.HOUR_OF_DAY, 24);
4257
Date expireDate = new Date(new Date().getTime() + (1000 * 60 * 60 * 10));
43-
return Jwts.builder()
44-
.setHeaderParam("type", "JWT")
45-
.setSubject(user.getId() + "")
46-
.setIssuedAt(now) // 签发时间
47-
.claim("userId", user.getId())
48-
.claim("name", user.getName())
49-
.setExpiration(expireDate) // 过期时间
50-
.signWith(SignatureAlgorithm.HS512, secret)
51-
.compact();
58+
String compact =
59+
Jwts.builder()
60+
.setHeaderParam("type", "JWT")
61+
.setSubject(user.getId() + "")
62+
.setIssuedAt(now) // 签发时间
63+
.claim("userId", user.getId())
64+
.claim("name", user.getName())
65+
.setExpiration(expireDate) // 过期时间
66+
.signWith(SignatureAlgorithm.HS512, secret)
67+
.compact();
68+
if (StringUtils.hasLength(compact) && !jwtCache.contains(compact)) {
69+
jwtCache.add(compact);
70+
}
71+
return compact;
5272
}
5373

5474
/** 解析token */
5575
public static Claims getClaimsByToken(String token) {
5676
try {
77+
if (StringUtils.hasLength(token) && !jwtCache.contains(token)) {
78+
return null;
79+
}
5780
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
5881
} catch (Exception e) {
5982
System.out.println("validate is token error");

backend/src/main/resources/application-dev.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,7 @@ spring.servlet.multipart.max-file-size=200MB
3636
spring.servlet.multipart.max-request-size=215MB
3737

3838
# All files generated during CSV import and export are stored in this folder
39-
file.temp-dir=./tempFile
39+
file.temp-dir=./tempFile
40+
41+
# token secret
42+
jwt.sign.secret = HSyJ0eXAiOiJKV1QasdfffffffSd3g8923402347523fffasdfasgwaegwaegawegawegawegawetwgewagagewasdf23r23DEEasdfawef134t2fawt2g325gafasdfasdfiLCJhbGciOiJIUzI1NiJ9

backend/src/main/resources/application-prod.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ spring.servlet.multipart.max-file-size=200MB
3232
spring.servlet.multipart.max-request-size=215MB
3333

3434
# All files generated during CSV import and export are stored in this folder
35-
file.temp-dir=./tempFile
35+
file.temp-dir=./tempFile
36+
37+
# token secret
38+
jwt.sign.secret =

backend/src/main/resources/application-test.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ spring.servlet.multipart.file-size-threshold=2KB
3030
spring.servlet.multipart.max-file-size=200MB
3131
spring.servlet.multipart.max-request-size=215MB
3232

33-
file.temp-dir=./tempFile
33+
file.temp-dir=./tempFile
34+
35+
# token secret
36+
jwt.sign.secret =

0 commit comments

Comments
 (0)