Если вы ищете предложения по своей архитектуре, вы можете сохранить дополнительный вызов во «внешней системе», изменив первый шаг и другие шаги:
Пользовательский интерфейс генерирует токен, используявнешняя система.
1.1.Внешняя система сохраняет пользовательские данные в некоторой базе данных значений ключей в памяти (например, Redis).
...
В моей службе есть фильтр, который извлекает данные пользователя из Redis с помощью токена.
Имеет смысл защищать «внешнюю систему» от нежелательной почты, вызванной множественными вызовами из вашего фильтра.
Если вы ищете подсказки для реализации, тогда мне нужно позвонить SecurityContextHolder.getContext().setAuthentication()
, когда ваш код подтвердил аутентификацию и завершенную авторизацию, для меня это нормально.
Может быть, лучше использовать @javax.annotation.security.RolesAllowed
вместо@Secured
(работает так же, но название более очевидно).
И иногда вам может потребоваться использовать org.springframework.http.client.ClientHttpRequestInterceptor
вместо фильтра, см. Например: Разница между перехватчиком и фильтромвесной MVC