From 5dcfb8343a50b9f185f6e05a6e61df9295f3ac4d Mon Sep 17 00:00:00 2001 From: RuoYi Date: Thu, 22 Nov 2018 09:28:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E8=8E=B7=E5=8F=96Principal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/framework/shiro/realm/UserRealm.java | 3 +-- .../java/com/ruoyi/framework/util/ShiroUtils.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java index 83924b68..e0298f38 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java @@ -127,8 +127,7 @@ public class UserRealm extends AuthorizingRealm log.info("对用户[" + username + "]进行登录验证..验证未通过{}", e.getMessage()); throw new AuthenticationException(e.getMessage(), e); } - ShiroUtils.getSession().setAttribute("sysUser", user); - SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user.getLoginName(), password, getName()); + SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, password, getName()); return info; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/util/ShiroUtils.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/ShiroUtils.java index ffb32ea3..a4d5dc70 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/util/ShiroUtils.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/util/ShiroUtils.java @@ -5,6 +5,8 @@ import org.apache.shiro.crypto.SecureRandomNumberGenerator; import org.apache.shiro.mgt.RealmSecurityManager; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.subject.SimplePrincipalCollection; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.framework.shiro.realm.UserRealm; @@ -35,7 +37,7 @@ public class ShiroUtils public static SysUser getSysUser() { SysUser user = null; - Object obj = getSession().getAttribute("sysUser"); + Object obj = getSubjct().getPrincipal(); if (StringUtils.isNotNull(obj)) { user = new SysUser(); @@ -46,7 +48,12 @@ public class ShiroUtils public static void setSysUser(SysUser user) { - ShiroUtils.getSession().setAttribute("sysUser", user); + Subject subject = getSubjct(); + PrincipalCollection principalCollection = subject.getPrincipals(); + String realmName = principalCollection.getRealmNames().iterator().next(); + PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName); + // 重新加载Principal + subject.runAs(newPrincipalCollection); } public static void clearCachedAuthorizationInfo()