@@ -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}
0 commit comments