如何在使用spring security时获取身份验证信息?

时间:2010-10-03 07:30:00

标签: spring-security

在我使用标签的页面上:  安全性:授权ifAnyGranted =“ROLE_USER,ROLE_ADMIN” ... 有用。 但是在服务器端:我使用SecurityContextHolder.getContext()。getAuthentication()。isAuthenticated(),它总是如此。当我没有登录时,系统将anonymousUser作为登录用户。

我该如何避免这种情况?

2 个答案:

答案 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();