Достать один и тот же объект AnonymousAuthenticationToken из SecurityContextHolder

Нужно достать один и тот же объект AnonymousAuthenticationToken при каждом запросе к серверу. При первом запросе выполняется следующий код:

AnonymousAuthenticationToken anonymousAuthenticationToken = new AnonymousAuthenticationToken(
            key, principal, authorities);

SecurityContextHolder.getContext().setAuthentication(anonymousAuthenticationToken);
SecurityContextHolder.getContext().getAuthentication().setAuthenticated(true);

После выполнения данного кода, в дебаге видно, что в контекст сохранилось. Но при последующем выполнении любого запроса, код

SecurityContextHolder.getContext().getAuthentication()

все равно возаращает "пустой объект" AnonymousAuthenticationToken. Спасибо!


Ответы (1 шт):

Автор решения: denis Krivorutchko

Для spring security AnonymousAuthenticationToken не несет в себе информации которую можно получить из SecurityContextHolder.getContext().getAuthentication() Обратите внимание, что нет реальной концептуальной разницы между пользователем, который «анонимно аутентифицирован», и пользователем, не прошедшим аутентификацию. Анонимная проверка подлинности Spring Security просто дает вам более удобный способ настройки атрибутов управления доступом. AnonymousAuthenticationToken несет в себе полезную информацию для AuthenticationTrustResolver isAnonymous(Authentication), для того что бы понять, если вы хотите получить доступ к ресурсу который не требует аунтификации

→ Ссылка