列出来自Apache Shiro ServletContainerSessionManager的经过身份验证的用户

时间:2016-05-11 08:09:15

标签: java shiro

我想实现在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;
    }

你能否就我如何解决这个问题给我一些建议?

1 个答案:

答案 0 :(得分:1)

您的来电manager.getSessionManager()未归还DefaultWebSessionManager,而是ServletContainerSessionManager

ServletContainerSessionManager不拥有方法getActiveSessions(),因此您必须以另一种方式获取此信息 - 这真正引出了真正的问题'为什么您想知道这一点第一名?'