Skip to content

Commit e07349a

Browse files
authored
[Bug][dev]Fix the token cannot be refreshed properly. (#4409)
1 parent e29e414 commit e07349a

2 files changed

Lines changed: 27 additions & 18 deletions

File tree

dinky-admin/src/main/java/org/dinky/controller/TokenController.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
public class TokenController {
6363

6464
private final TokenService tokenService;
65+
private final org.dinky.service.impl.TokenService tokenServiceStp;
6566
private final StpLogic stpLogic;
6667

6768
/**
@@ -92,9 +93,13 @@ public ProTableResult<SysToken> listToken(@RequestBody JsonNode params) {
9293
mode = SaMode.OR)
9394
public Result<Void> saveOrUpdateToken(@RequestBody SysToken sysToken) {
9495
sysToken.setSource(SysToken.Source.CUSTOM);
95-
return tokenService.saveOrUpdate(sysToken)
96+
Result<Void> result = tokenService.saveOrUpdate(sysToken)
9697
? Result.succeed(Status.SAVE_SUCCESS)
9798
: Result.failed(Status.SAVE_FAILED);
99+
if (result.isSuccess()) {
100+
tokenServiceStp.injectToken(sysToken);
101+
}
102+
return result;
98103
}
99104

100105
/**

dinky-admin/src/main/java/org/dinky/service/impl/TokenService.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -300,29 +300,33 @@ public void initRefreshThread() {
300300
*/
301301
@Override
302302
public void init() {
303-
DateTime now = DateUtil.date();
304303
List<SysToken> sysTokens = tokenMapper.selectList(new LambdaQueryWrapper<>());
305304
for (SysToken sysToken : sysTokens) {
306-
Integer userId = sysToken.getUserId();
307-
dataMap.put(stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()), userId.toString());
308-
dataMap.put(stpLogic.splicingKeyLastActiveTime(sysToken.getTokenValue()), StrUtil.toString(now.getTime()));
309-
UserDTO userInfo = new UserDTO();
310-
User user = new User();
311-
user.setId(userId);
312-
userInfo.setUser(user);
313-
userInfo.setTenantList(Collections.singletonList(tenantMapper.selectById(sysToken.getTenantId())));
314-
UserInfoContextHolder.set(userId, userInfo);
315-
if (sysToken.getExpireType() == 1) {
316-
expireMap.put(stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()), NEVER_EXPIRE);
317-
} else {
318-
expireMap.put(
319-
stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()),
320-
sysToken.getExpireEndTime().getTime());
321-
}
305+
injectToken(sysToken);
322306
}
323307
initRefreshThread();
324308
}
325309

310+
public void injectToken(SysToken sysToken) {
311+
DateTime now = DateUtil.date();
312+
Integer userId = sysToken.getUserId();
313+
dataMap.put(stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()), userId.toString());
314+
dataMap.put(stpLogic.splicingKeyLastActiveTime(sysToken.getTokenValue()), StrUtil.toString(now.getTime()));
315+
UserDTO userInfo = new UserDTO();
316+
User user = new User();
317+
user.setId(userId);
318+
userInfo.setUser(user);
319+
userInfo.setTenantList(Collections.singletonList(tenantMapper.selectById(sysToken.getTenantId())));
320+
UserInfoContextHolder.set(userId, userInfo);
321+
if (sysToken.getExpireType() == 1) {
322+
expireMap.put(stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()), NEVER_EXPIRE);
323+
} else {
324+
expireMap.put(
325+
stpLogic.splicingKeyTokenValue(sysToken.getTokenValue()),
326+
sysToken.getExpireEndTime().getTime());
327+
}
328+
}
329+
326330
/**
327331
* 组件被卸载时,结束定时任务,不再定时清理过期数据
328332
*/

0 commit comments

Comments
 (0)