在我使用标签的页面上: 安全性:授权ifAnyGranted =“ROLE_USER,ROLE_ADMIN” ... 有用。 但是在服务器端:我使用SecurityContextHolder.getContext()。getAuthentication()。isAuthenticated(),它总是如此。当我没有登录时,系统将anonymousUser作为登录用户。
我该如何避免这种情况?
答案 0 :(得分:4)
如果是spring security 2.x,可以使用AuthorityUtils.userHasAuthority(String authority)
来明确检查角色。
您可以迭代SecurityContextHolder.getContext().getAuthentication().getAuthorities()
并确保仅允许对所需角色进行操作。
答案 1 :(得分:3)
SecurityContextHolder.getContext()。getAuthentication()。isAuthenticated()几乎总是会返回true。 使用这个
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();