Spring security + JWT: получить принципал после перезапуска сервера - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть фронтальное приложение (угловое).Для аутентификации я использую Spring Security oauth.Я также использую токены JWT.Все формы аутентификации (создание учетной записи, логин, смена пароля ...) обрабатываются на стороне Spring.

Если я перезагружаю сервер аутентификации во время входа в систему, а затем перехожу в мое переднее приложение, все работаетхорошо, так как мой JWT не истекает, он все еще действителен.

У меня есть WS для доступа к форме «Изменить пароль».Для этого WS требуется аутентификация:

.antMatchers("/user/updatePassword").authenticated()

Если я сразу же после перезапуска сервера аутентификации вызываю WS "/ user / updatePassword", меня больше не считают аутентифицированным, а затем меня перенаправляют на входform -> Это нормально

Но если я сделаю такой сценарий:

  • Перезапустите сервер аутентификации во время регистрации

  • Перейдитенемного на моей угловой части -> некоторые запросы на токен отправляются на сервер аутентификации.

  • Сервер аутентификации устанавливает для Authentication.isAuthenticated () значение true (поскольку токен все еще действует).

  • Попробуйте вызвать "/ user/ updatePassword "для отображения формы" Изменить пароль "

В это время

SecurityContextHolder.getContext().getAuthentication().isAuthenticated() == true

, но

 SecurityContextHolder.getContext().getAuthentication().getPrincipal()

содержит объект User, но содержит только нулевые значения, поэтому я не могу определить текущего пользователя или проверить действительность старого пароля.

Я должен что-то пропустить, но не могу найти чтои где?Может быть, я должен получить текущего пользователя, но я не знаю как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...