|
@@ -0,0 +1,62 @@
|
|
|
+package com.ruoyi.framework.shiro.service;
|
|
|
+
|
|
|
+import java.io.Serializable;
|
|
|
+import org.apache.shiro.session.Session;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import com.ruoyi.common.utils.StringUtils;
|
|
|
+import com.ruoyi.framework.shiro.session.OnlineSession;
|
|
|
+import com.ruoyi.system.domain.SysUserOnline;
|
|
|
+import com.ruoyi.system.service.ISysUserOnlineService;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 会话db操作处理
|
|
|
+ *
|
|
|
+ * @author ruoyi
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class SysShiroService
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private ISysUserOnlineService onlineService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除会话
|
|
|
+ *
|
|
|
+ * @param onlineSession 会话信息
|
|
|
+ */
|
|
|
+ public void deleteSession(OnlineSession onlineSession)
|
|
|
+ {
|
|
|
+ onlineService.deleteOnlineById(String.valueOf(onlineSession.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取会话信息
|
|
|
+ *
|
|
|
+ * @param sessionId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Session getSession(Serializable sessionId)
|
|
|
+ {
|
|
|
+ SysUserOnline userOnline = onlineService.selectOnlineById(String.valueOf(sessionId));
|
|
|
+ return StringUtils.isNull(userOnline) ? null : createSession(userOnline);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Session createSession(SysUserOnline userOnline)
|
|
|
+ {
|
|
|
+ OnlineSession onlineSession = new OnlineSession();
|
|
|
+ if (StringUtils.isNotNull(userOnline))
|
|
|
+ {
|
|
|
+ onlineSession.setId(userOnline.getSessionId());
|
|
|
+ onlineSession.setHost(userOnline.getIpaddr());
|
|
|
+ onlineSession.setBrowser(userOnline.getBrowser());
|
|
|
+ onlineSession.setOs(userOnline.getOs());
|
|
|
+ onlineSession.setDeptName(userOnline.getDeptName());
|
|
|
+ onlineSession.setLoginName(userOnline.getLoginName());
|
|
|
+ onlineSession.setStartTimestamp(userOnline.getStartTimestamp());
|
|
|
+ onlineSession.setLastAccessTime(userOnline.getLastAccessTime());
|
|
|
+ onlineSession.setTimeout(userOnline.getExpireTime());
|
|
|
+ }
|
|
|
+ return onlineSession;
|
|
|
+ }
|
|
|
+}
|