У меня есть гибридное приложение, которое использует Spring Security для проверки ролей, но не для входа в систему. Ошибка PreAuthorize с сообщением «Объект аутентификации не найден в SecurityContext»
Я попытался добавить это в свой контроллер входа в систему, но, похоже, он не работает:
SecurityContextHolder.getContext().setAuthentication(makeAuthentication(op));
Конфигурация следующим образом:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebConfig extends WebSecurityConfigurerAdapter {}
Я вынужден использовать поставщика аутентификации? Как это будет работать в этом случае? Роли пользователей хранятся в объекте Operator.
EDIT: похоже, что SecurityContext очищается между запросами. Как сделать его постоянным? Я попытался добавить контекст безопасности к сеансу как атрибут SPRING_SECURITY_CONTEXT_KEY
, но все равно не повезло. В конце концов, я заставил это работать, восстановив контекст в перехватчике. Не уверен, что это лучший способ.