我尝试确定谁在我的网站上在线。对于未经过身份验证的用户,我有不同的菜单,而不是这样的身份验证:
<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不是查找经过身份验证的用户的好方法吗?有什么不同?什么是解决这两个问题的最好方法?