Spring安全性SessionRegister与身份验证

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

标签: spring security authentication spring-security

我尝试确定谁在我的网站上在线。对于未经过身份验证的用户,我有不同的菜单,而不是这样的身份验证:

<div sec:authorize="!hasAuthority('ROLE_USER') || !isAuthenticated()">
        menu for not authenticated 
</div>
<div sec:authorize="hasAuthority('ROLE_USER') && isAuthenticated()">
        menu for authenticated 
</div>

我的isOnline函数如下所示:

private boolean isOnline(String username){
    List<Object> principals = sessionRegistry.getAllPrincipals();
    List<String> usersNamesList = new ArrayList<String>();
    for (Object principal: principals) {
        if (principal instanceof UserDetails) {
            usersNamesList.add(((UserDetails) principal).getUsername());
        }
    }
    return usersNamesList.contains(username);
}

但有些用户会获得经过身份验证的菜单,同时函数isOnline会为此用户返回false。 SessionRegistryImpl不是查找经过身份验证的用户的好方法吗?有什么不同?什么是解决这两个问题的最好方法?

0 个答案:

没有答案