|
|
@@ -14,7 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import com.goafanti.common.constant.ShiroConstants;
|
|
|
import com.goafanti.common.model.AftUser;
|
|
|
-import com.goafanti.common.model.User;
|
|
|
import com.goafanti.common.utils.ArrayUtils;
|
|
|
import com.goafanti.common.utils.LoggerUtils;
|
|
|
import com.goafanti.core.shiro.CustomShiroSessionDAO;
|
|
|
@@ -25,29 +24,29 @@ public class CustomSessionManager {
|
|
|
* session status
|
|
|
*/
|
|
|
@Autowired
|
|
|
- ShiroSessionRepository shiroSessionRepository;
|
|
|
+ ShiroSessionRepository shiroSessionRepository;
|
|
|
|
|
|
@Autowired
|
|
|
- CustomShiroSessionDAO customShiroSessionDAO;
|
|
|
+ CustomShiroSessionDAO customShiroSessionDAO;
|
|
|
|
|
|
-// /**
|
|
|
-// * 获取所有的有效Session用户
|
|
|
-// *
|
|
|
-// * @return
|
|
|
-// */
|
|
|
-// public List<UserOnlineBo> getAllUser() {
|
|
|
-// // 获取所有session
|
|
|
-// Collection<Session> sessions = customShiroSessionDAO.getActiveSessions();
|
|
|
-// List<UserOnlineBo> list = new ArrayList<UserOnlineBo>();
|
|
|
-//
|
|
|
-// for (Session session : sessions) {
|
|
|
-// UserOnlineBo bo = getSessionBo(session);
|
|
|
-// if (null != bo) {
|
|
|
-// list.add(bo);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return list;
|
|
|
-// }
|
|
|
+ // /**
|
|
|
+ // * 获取所有的有效Session用户
|
|
|
+ // *
|
|
|
+ // * @return
|
|
|
+ // */
|
|
|
+ // public List<UserOnlineBo> getAllUser() {
|
|
|
+ // // 获取所有session
|
|
|
+ // Collection<Session> sessions = customShiroSessionDAO.getActiveSessions();
|
|
|
+ // List<UserOnlineBo> list = new ArrayList<UserOnlineBo>();
|
|
|
+ //
|
|
|
+ // for (Session session : sessions) {
|
|
|
+ // UserOnlineBo bo = getSessionBo(session);
|
|
|
+ // if (null != bo) {
|
|
|
+ // list.add(bo);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return list;
|
|
|
+ // }
|
|
|
|
|
|
/**
|
|
|
* 根据ID查询 SimplePrincipalCollection
|
|
|
@@ -72,7 +71,7 @@ public class CustomSessionManager {
|
|
|
SimplePrincipalCollection spc = (SimplePrincipalCollection) obj;
|
|
|
// 判断用户,匹配用户ID。
|
|
|
obj = spc.getPrimaryPrincipal();
|
|
|
- if (null != obj && obj instanceof User) {
|
|
|
+ if (null != obj && obj instanceof AftUser) {
|
|
|
AftUser user = (AftUser) obj;
|
|
|
// 比较用户ID,符合即加入集合
|
|
|
if (null != user && idset.contains(user.getId())) {
|
|
|
@@ -84,58 +83,60 @@ public class CustomSessionManager {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 获取单个Session
|
|
|
-// *
|
|
|
-// * @param sessionId
|
|
|
-// * @return
|
|
|
-// */
|
|
|
-// public UserOnlineBo getSession(String sessionId) {
|
|
|
-// Session session = shiroSessionRepository.getSession(sessionId);
|
|
|
-// UserOnlineBo bo = getSessionBo(session);
|
|
|
-// return bo;
|
|
|
-// }
|
|
|
+ // /**
|
|
|
+ // * 获取单个Session
|
|
|
+ // *
|
|
|
+ // * @param sessionId
|
|
|
+ // * @return
|
|
|
+ // */
|
|
|
+ // public UserOnlineBo getSession(String sessionId) {
|
|
|
+ // Session session = shiroSessionRepository.getSession(sessionId);
|
|
|
+ // UserOnlineBo bo = getSessionBo(session);
|
|
|
+ // return bo;
|
|
|
+ // }
|
|
|
|
|
|
-// private UserOnlineBo getSessionBo(Session session) {
|
|
|
-// // 获取session登录信息。
|
|
|
-// Object obj = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
|
|
|
-// if (null == obj) {
|
|
|
-// return null;
|
|
|
-// }
|
|
|
-// // 确保是 SimplePrincipalCollection对象。
|
|
|
-// if (obj instanceof SimplePrincipalCollection) {
|
|
|
-// SimplePrincipalCollection spc = (SimplePrincipalCollection) obj;
|
|
|
-// /**
|
|
|
-// * 获取用户登录的,@link UserRealm.doGetAuthenticationInfo(...)方法中 return
|
|
|
-// * new SimpleAuthenticationInfo(user,user.getPwd(),
|
|
|
-// * getName());的user 对象。
|
|
|
-// */
|
|
|
-// obj = spc.getPrimaryPrincipal();
|
|
|
-// if (null != obj && obj instanceof User) {
|
|
|
-// // 存储session + user 综合信息
|
|
|
-// UserOnlineBo userBo = new UserOnlineBo((User) obj);
|
|
|
-// // 最后一次和系统交互的时间
|
|
|
-// userBo.setLastAccess(session.getLastAccessTime());
|
|
|
-// // 主机的ip地址
|
|
|
-// userBo.setHost(session.getHost());
|
|
|
-// // session ID
|
|
|
-// userBo.setSessionId(session.getId().toString());
|
|
|
-// // 回话到期 ttl(ms)
|
|
|
-// userBo.setTimeout(session.getTimeout());
|
|
|
-// // session创建时间
|
|
|
-// userBo.setStartTime(session.getStartTimestamp());
|
|
|
-// // 是否踢出
|
|
|
-// SessionStatus sessionStatus = (SessionStatus) session.getAttribute(ShiroConstants.SESSION_STATUS);
|
|
|
-// boolean status = Boolean.TRUE;
|
|
|
-// if (null != sessionStatus) {
|
|
|
-// status = sessionStatus.getOnlineStatus();
|
|
|
-// }
|
|
|
-// userBo.setSessionStatus(status);
|
|
|
-// return userBo;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return null;
|
|
|
-// }
|
|
|
+ // private UserOnlineBo getSessionBo(Session session) {
|
|
|
+ // // 获取session登录信息。
|
|
|
+ // Object obj =
|
|
|
+ // session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
|
|
|
+ // if (null == obj) {
|
|
|
+ // return null;
|
|
|
+ // }
|
|
|
+ // // 确保是 SimplePrincipalCollection对象。
|
|
|
+ // if (obj instanceof SimplePrincipalCollection) {
|
|
|
+ // SimplePrincipalCollection spc = (SimplePrincipalCollection) obj;
|
|
|
+ // /**
|
|
|
+ // * 获取用户登录的,@link UserRealm.doGetAuthenticationInfo(...)方法中 return
|
|
|
+ // * new SimpleAuthenticationInfo(user,user.getPwd(),
|
|
|
+ // * getName());的user 对象。
|
|
|
+ // */
|
|
|
+ // obj = spc.getPrimaryPrincipal();
|
|
|
+ // if (null != obj && obj instanceof User) {
|
|
|
+ // // 存储session + user 综合信息
|
|
|
+ // UserOnlineBo userBo = new UserOnlineBo((User) obj);
|
|
|
+ // // 最后一次和系统交互的时间
|
|
|
+ // userBo.setLastAccess(session.getLastAccessTime());
|
|
|
+ // // 主机的ip地址
|
|
|
+ // userBo.setHost(session.getHost());
|
|
|
+ // // session ID
|
|
|
+ // userBo.setSessionId(session.getId().toString());
|
|
|
+ // // 回话到期 ttl(ms)
|
|
|
+ // userBo.setTimeout(session.getTimeout());
|
|
|
+ // // session创建时间
|
|
|
+ // userBo.setStartTime(session.getStartTimestamp());
|
|
|
+ // // 是否踢出
|
|
|
+ // SessionStatus sessionStatus = (SessionStatus)
|
|
|
+ // session.getAttribute(ShiroConstants.SESSION_STATUS);
|
|
|
+ // boolean status = Boolean.TRUE;
|
|
|
+ // if (null != sessionStatus) {
|
|
|
+ // status = sessionStatus.getOnlineStatus();
|
|
|
+ // }
|
|
|
+ // userBo.setSessionStatus(status);
|
|
|
+ // return userBo;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return null;
|
|
|
+ // }
|
|
|
|
|
|
/**
|
|
|
* 改变Session状态
|
|
|
@@ -173,31 +174,32 @@ public class CustomSessionManager {
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 查询要禁用的用户是否在线。
|
|
|
-// *
|
|
|
-// * @param id
|
|
|
-// * 用户ID
|
|
|
-// * @param status
|
|
|
-// * 用户状态
|
|
|
-// */
|
|
|
-// public void forbidUserById(Long id, Integer status) {
|
|
|
-// // 获取所有在线用户
|
|
|
-// for (UserOnlineBo bo : getAllUser()) {
|
|
|
-// Long userId = bo.getId();
|
|
|
-// // 匹配用户ID
|
|
|
-// if (userId.equals(id)) {
|
|
|
-// // 获取用户Session
|
|
|
-// Session session = shiroSessionRepository.getSession(bo.getSessionId());
|
|
|
-// // 标记用户Session
|
|
|
-// SessionStatus sessionStatus = (SessionStatus) session.getAttribute(ShiroConstants.SESSION_STATUS);
|
|
|
-// // 是否踢出 true:有效,false:踢出。
|
|
|
-// sessionStatus.setOnlineStatus(status == 1);
|
|
|
-// // 更新Session
|
|
|
-// customShiroSessionDAO.update(session);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+ // /**
|
|
|
+ // * 查询要禁用的用户是否在线。
|
|
|
+ // *
|
|
|
+ // * @param id
|
|
|
+ // * 用户ID
|
|
|
+ // * @param status
|
|
|
+ // * 用户状态
|
|
|
+ // */
|
|
|
+ // public void forbidUserById(Long id, Integer status) {
|
|
|
+ // // 获取所有在线用户
|
|
|
+ // for (UserOnlineBo bo : getAllUser()) {
|
|
|
+ // Long userId = bo.getId();
|
|
|
+ // // 匹配用户ID
|
|
|
+ // if (userId.equals(id)) {
|
|
|
+ // // 获取用户Session
|
|
|
+ // Session session = shiroSessionRepository.getSession(bo.getSessionId());
|
|
|
+ // // 标记用户Session
|
|
|
+ // SessionStatus sessionStatus = (SessionStatus)
|
|
|
+ // session.getAttribute(ShiroConstants.SESSION_STATUS);
|
|
|
+ // // 是否踢出 true:有效,false:踢出。
|
|
|
+ // sessionStatus.setOnlineStatus(status == 1);
|
|
|
+ // // 更新Session
|
|
|
+ // customShiroSessionDAO.update(session);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
public void setShiroSessionRepository(ShiroSessionRepository shiroSessionRepository) {
|
|
|
this.shiroSessionRepository = shiroSessionRepository;
|