Kaynağa Gözat

修复gettoken刷新token无会话导致普通用户被会话校验拒绝

gettoken原走setToken(id,userName)重载(不写Redis jti),刷新出的token被@Auth(session=true)切面判为merchant.session.invalid;改走setToken(USER_TOKEN_KEY,LoginUserDto)与/lodeing同款,刷新即带会话,部署后已中招用户再刷一次token自愈

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
qmj 1 gün önce
ebeveyn
işleme
f8663d376d

+ 6 - 1
ruoyi-admin/src/main/java/com/ruoyi/app/user/InfoUserController.java

@@ -894,7 +894,12 @@ public class InfoUserController extends BaseController {
         if (user == null) {
             return error(MessageUtils.message("no.user.stop"));
         } else {
-            String wtoken = jwtUtil.setToken(String.valueOf(user.getUserId()), user.getUserName());
+            // 必须走写 Redis 会话的重载:无会话 token 会被 @Auth(session=true) 切面拒掉(修复普通用户 getidlist 报商家会话无效)
+            LoginUserDto userDto = new LoginUserDto();
+            userDto.setUserId(user.getUserId());
+            userDto.setUserName(user.getUserName());
+            fillLoginUserInfo(userDto);
+            String wtoken = JwtUtil.setToken(CacheConstants.USER_TOKEN_KEY, userDto);
             return success(MessageUtils.message("no.user.token.success"), wtoken);
         }
     }