This commit is contained in:
Paidax
2024-12-13 10:43:31 +08:00
parent c418e37618
commit 6e4cf46607
20 changed files with 80 additions and 82 deletions
@@ -328,30 +328,30 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
//清除角色缓存
sysRoleService.clearCache();
//获取sessionDao
DefaultWebSessionManager shiroWebSessionManager = Mvcs.getIoc().get(DefaultWebSessionManager.class, "shiroWebSessionManager");
SessionDAO sessionDAO = shiroWebSessionManager.getSessionDAO();
Collection<Session> activeSessions = sessionDAO.getActiveSessions();
//获取所有在线的session
for (Session activeSession : activeSessions) {
Serializable id = activeSession.getId();
Sys_user user = dao().fetch(Sys_user.class, Cnd.where("loginSessionId", "=", id));
if (Lang.isEmpty(user)) {
continue;
}
fetchLinks(user, null);
fillModuleMenus(user);
fillUnitUnion(user);
//更新subject
List<PrincipalCollection> list = new CopyOnWriteArrayList<>();
Subject subject = SecurityUtils.getSubject();
PrincipalCollection principals = subject.getPrincipals();
String realName = principals.getRealmNames().iterator().next();
PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realName);
list.add(0, newPrincipalCollection);
activeSession.setAttribute("org.apache.shiro.subject.support.DelegatingSubject.RUN_AS_PRINCIPALS_SESSION_KEY", list);
}
// //获取sessionDao
// DefaultWebSessionManager shiroWebSessionManager = Mvcs.getIoc().get(DefaultWebSessionManager.class, "shiroWebSessionManager");
// SessionDAO sessionDAO = shiroWebSessionManager.getSessionDAO();
// Collection<Session> activeSessions = sessionDAO.getActiveSessions();
//
// //获取所有在线的session
// for (Session activeSession : activeSessions) {
// Serializable id = activeSession.getId();
// Sys_user user = dao().fetch(Sys_user.class, Cnd.where("loginSessionId", "=", id));
// if (Lang.isEmpty(user)) {
// continue;
// }
// fetchLinks(user, null);
// fillModuleMenus(user);
// fillUnitUnion(user);
//
// //更新subject
// List<PrincipalCollection> list = new CopyOnWriteArrayList<>();
// Subject subject = SecurityUtils.getSubject();
// PrincipalCollection principals = subject.getPrincipals();
// String realName = principals.getRealmNames().iterator().next();
// PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realName);
// list.add(0, newPrincipalCollection);
// activeSession.setAttribute("org.apache.shiro.subject.support.DelegatingSubject.RUN_AS_PRINCIPALS_SESSION_KEY", list);
// }
}
}