Skip to content

Commit e533100

Browse files
committed
feat(system/client): 添加双token认证配置
1 parent 9ab8438 commit e533100

2 files changed

Lines changed: 20 additions & 13 deletions

File tree

continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public LoginResp login(LoginReq req, HttpServletRequest request) {
8080
ValidationUtils.throwIfNull(client, "客户端不存在");
8181
ValidationUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(client.getStatus()), "客户端已禁用");
8282
ValidationUtils.throwIf(!client.getAuthType().contains(authType.getValue()), "该客户端暂未授权 [{}] 认证", authType
83-
.getDescription());
83+
.getDescription());
8484
// 获取处理器
8585
LoginHandler<LoginReq> loginHandler = loginHandlerFactory.getHandler(authType);
8686
// 登录前置处理
@@ -137,16 +137,23 @@ public LoginResp refreshToken(String refreshToken) {
137137
if (refreshTokenInfo == null) {
138138
throw new BusinessException("无效的Refresh Token");
139139
}
140-
// 获取登录时设置的参数
141-
SaLoginParameter loginParameter = (SaLoginParameter) refreshTokenInfo;
142-
UserContext userContext = (UserContext) loginParameter.getExtra(AuthConstants.LOGIN_USER);
143-
UserContextHolder.setContext(userContext);
144-
ClientResp client = clientService.getByClientId(userContext.getClientId());
145-
// 删除原先的 Token
146-
StpUtil.kickoutByTokenValue(loginParameter.getToken());
147-
LoginResp loginResp = LoginHandler.buildLoginResp(loginParameter, userContext, client);
148-
// 删除原先的 Refresh token
149-
SaTempUtil.deleteToken(refreshToken);
150-
return loginResp;
140+
String oldToken = null;
141+
try {
142+
// 获取登录时设置的参数
143+
SaLoginParameter loginParameter = (SaLoginParameter) refreshTokenInfo;
144+
UserContext userContext = (UserContext) loginParameter.getExtra(AuthConstants.LOGIN_USER);
145+
UserContextHolder.setContext(userContext);
146+
ClientResp client = clientService.getByClientId(userContext.getClientId());
147+
oldToken = loginParameter.getToken();
148+
LoginResp loginResp = LoginHandler.buildLoginResp(loginParameter, userContext, client);
149+
return loginResp;
150+
} finally {
151+
if (oldToken != null) {
152+
// 删除原先的 Token
153+
StpUtil.kickoutByTokenValue(oldToken);
154+
}
155+
// 删除原先的 Refresh token
156+
SaTempUtil.deleteToken(refreshToken);
157+
}
151158
}
152159
}

continew-system/src/main/java/top/continew/admin/system/model/req/ClientReq.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class ClientReq implements Serializable {
8080
* 是否启用Refresh Token
8181
*/
8282
@Schema(description = "是否启用 Refresh Token", example = "false")
83-
@NotNull(message = "Refresh Token 不能为空")
83+
@NotNull(message = "是否启用 Refresh Token 不能为空")
8484
private Boolean isEnableRefreshToken;
8585

8686
/**

0 commit comments

Comments
 (0)