Browse Source

解决登录异常问题

winkey 3 weeks ago
parent
commit
72675b17c4

+ 6 - 2
ruoyi-common/ruoyi-common-satoken/src/main/java/org/ruoyi/common/satoken/utils/LoginHelper.java

@@ -2,6 +2,7 @@ package org.ruoyi.common.satoken.utils;
 
 import cn.dev33.satoken.context.SaHolder;
 import cn.dev33.satoken.context.model.SaStorage;
+import cn.dev33.satoken.session.SaSession;
 import cn.dev33.satoken.stp.SaLoginModel;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.convert.Convert;
@@ -73,8 +74,11 @@ public class LoginHelper {
         if (loginUser != null) {
             return loginUser;
         }
-        loginUser = (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);
-        SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
+        SaSession tokenSession = StpUtil.getTokenSession();
+        if (tokenSession != null) {
+            loginUser =  (LoginUser) tokenSession.get(LOGIN_USER_KEY);
+            SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
+        };
         return loginUser;
     }
 

+ 3 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java

@@ -228,7 +228,9 @@ public class SysLoginService {
                 TenantHelper.clearDynamic();
             }
             StpUtil.logout();
-            recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
+            if (loginUser !=null) {
+                recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
+            }
         } catch (NotLoginException ignored) {
         }
     }