我想实现在Apache Shiro中列出登录用户的解决方案。我试过这段代码:
XCode
但是当我运行代码时,我收到此错误消息:
public Collection<Session> listAccounts() throws IllegalAccessException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException
{
DefaultSecurityManager manager = (DefaultSecurityManager) SecurityUtils.getSecurityManager();
DefaultWebSessionManager sessionManager = (DefaultWebSessionManager) manager.getSessionManager();
// invoke "sessionManager.getActiveSessions()" via reflection:
Method getActiveSessionsMethod = DefaultSessionManager.class.getDeclaredMethod("getActiveSessions");
getActiveSessionsMethod.setAccessible(true);
Collection<Session> activeSessions = (Collection<Session>) getActiveSessionsMethod.invoke(sessionManager);
return activeSessions;
}
你能否就我如何解决这个问题给我一些建议?
答案 0 :(得分:1)
您的来电manager.getSessionManager()
未归还DefaultWebSessionManager
,而是ServletContainerSessionManager
。
ServletContainerSessionManager
不拥有方法getActiveSessions()
,因此您必须以另一种方式获取此信息 - 这真正引出了真正的问题'为什么您想知道这一点第一名?'