From b660965ecbdcacd9789973c8eef4acc73d846fa7 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Sun, 4 Aug 2019 11:45:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=B1=9E=E6=80=A7=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=94=B9=E5=8F=98=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=85=8B?= =?UTF-8?q?=E9=9A=86=E6=96=B9=E5=BC=8F=EF=BC=88=E9=98=B2=E6=AD=A2=E7=83=AD?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=87=BA=E7=8E=B0=E5=BC=BA=E8=BD=AC=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/session/OnlineWebSessionManager.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java index 080567ee..08980673 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java @@ -14,6 +14,8 @@ import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ruoyi.common.constant.ShiroConstants; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.shiro.session.OnlineSession; import com.ruoyi.system.domain.SysUserOnline; @@ -27,15 +29,15 @@ import com.ruoyi.system.service.ISysUserOnlineService; public class OnlineWebSessionManager extends DefaultWebSessionManager { private static final Logger log = LoggerFactory.getLogger(OnlineWebSessionManager.class); - + @Override public void setAttribute(SessionKey sessionKey, Object attributeKey, Object value) throws InvalidSessionException { super.setAttribute(sessionKey, attributeKey, value); if (value != null && needMarkAttributeChanged(attributeKey)) { - OnlineSession s = (OnlineSession) doGetSession(sessionKey); - s.markAttributeChanged(); + OnlineSession session = getOnlineSession(sessionKey); + session.markAttributeChanged(); } } @@ -68,13 +70,25 @@ public class OnlineWebSessionManager extends DefaultWebSessionManager Object removed = super.removeAttribute(sessionKey, attributeKey); if (removed != null) { - OnlineSession s = (OnlineSession) doGetSession(sessionKey); + OnlineSession s = getOnlineSession(sessionKey); s.markAttributeChanged(); } return removed; } + public OnlineSession getOnlineSession(SessionKey sessionKey) + { + OnlineSession session = null; + Object obj = doGetSession(sessionKey); + if (StringUtils.isNotNull(obj)) + { + session = new OnlineSession(); + BeanUtils.copyBeanProp(session, obj); + } + return session; + } + /** * 验证session是否有效 用于删除过期session */