Как получить информацию об аутентификации при использовании Spring Security? - PullRequest
3 голосов
/ 03 октября 2010

На страницах я использую тег: безопасность: авторизовать ifAnyGranted = "ROLE_USER, ROLE_ADMIN" ... Оно работает. Но на стороне сервера: я использую SecurityContextHolder.getContext (). GetAuthentication (). IsAuthenticated (), это всегда верно. Когда я не вошел в систему, система принимает в качестве пользователя входа anonymousUser.

Как мне этого избежать?

Ответы [ 2 ]

4 голосов
/ 04 октября 2010

Если это Spring Security 2.x, есть AuthorityUtils.userHasAuthority(String authority), который можно использовать для явной проверки роли.

Вы можете выполнить итерацию по SecurityContextHolder.getContext().getAuthentication().getAuthorities() и убедиться, что разрешаете работу толькороли, которые вы хотите.

3 голосов
/ 13 сентября 2012

SecurityContextHolder.getContext (). GetAuthentication (). IsAuthenticated () будет возвращать true почти всегда.используйте это

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...