修复多账号模式下不能正确重置 StpLogic 的问题

This commit is contained in:
click33 2022-08-08 02:47:37 +08:00
parent 83ce6fcfd3
commit 42272c83b6
4 changed files with 34 additions and 18 deletions

View File

@ -236,7 +236,7 @@ public class SaManager {
return StpUtil.stpLogic; return StpUtil.stpLogic;
} }
// SaManager中获取 // stpLogicMap 中获取
StpLogic stpLogic = stpLogicMap.get(loginType); StpLogic stpLogic = stpLogicMap.get(loginType);
if(stpLogic == null) { if(stpLogic == null) {
/* /*

View File

@ -32,12 +32,18 @@ public class StpUtil {
/** /**
* 重置 StpLogic 对象 * 重置 StpLogic 对象
* @param stpLogic / * <br> 1更改此账户的 StpLogic 对象
* <br> 2put 到全局 StpLogic 集合中
*
* @param newStpLogic /
*/ */
public static void setStpLogic(StpLogic stpLogic) { public static void setStpLogic(StpLogic newStpLogic) {
StpUtil.stpLogic = stpLogic; // 重置此账户的 StpLogic 对象
// 防止自定义 stpLogic 被覆盖 stpLogic = newStpLogic;
SaManager.putStpLogic(stpLogic);
// 添加到全局 StpLogic 集合中
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
} }

View File

@ -8,7 +8,6 @@ import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
/** /**
* Sa-Token 权限认证工具类 (user版) * Sa-Token 权限认证工具类 (user版)
@ -36,12 +35,18 @@ public class StpUserUtil {
/** /**
* 重置 StpLogic 对象 * 重置 StpLogic 对象
* @param stpLogic / * <br> 1更改此账户的 StpLogic 对象
* <br> 2put 到全局 StpLogic 集合中
*
* @param newStpLogic /
*/ */
public static void setStpLogic(StpLogic stpLogic) { public static void setStpLogic(StpLogic newStpLogic) {
StpUtil.stpLogic = stpLogic; // 重置此账户的 StpLogic 对象
// 防止自定义 stpLogic 被覆盖 stpLogic = newStpLogic;
SaManager.putStpLogic(stpLogic);
// 添加到全局 StpLogic 集合中
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
} }

View File

@ -8,7 +8,6 @@ import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
/** /**
* Sa-Token 权限认证工具类 (user版) * Sa-Token 权限认证工具类 (user版)
@ -36,12 +35,18 @@ public class StpUserUtil {
/** /**
* 重置 StpLogic 对象 * 重置 StpLogic 对象
* @param stpLogic / * <br> 1更改此账户的 StpLogic 对象
* <br> 2put 到全局 StpLogic 集合中
*
* @param newStpLogic /
*/ */
public static void setStpLogic(StpLogic stpLogic) { public static void setStpLogic(StpLogic newStpLogic) {
StpUtil.stpLogic = stpLogic; // 重置此账户的 StpLogic 对象
// 防止自定义 stpLogic 被覆盖 stpLogic = newStpLogic;
SaManager.putStpLogic(stpLogic);
// 添加到全局 StpLogic 集合中
// 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
SaManager.putStpLogic(newStpLogic);
} }