Как обрабатывать токен JWT на стороне клиента Spring MVC? - PullRequest
0 голосов
/ 15 мая 2019

Существует приложение Spring MVC - сервер генерирует HTML, клиент не является SPA (т. Е. Речь идет не об API в любой форме).
Во время аутентификации токен JWT генерируется и возвращается клиенту. Во время авторизации сервер проверяет токен JWT.

Как хранить токен JWT на стороне клиента и передавать его через все дальнейшие запросы на сервер? Помните, что это приложение Spring MVC, а не SPA.

Я пытался найти в Google любые примеры, но единственные выводы касаются аутентификации REST, которая вообще не относится к этому случаю.

В худшем случае мы можем выполнить аутентификацию из JavaScript и сохранить токен JWT в кэше / cookie. Но, возможно, Spring MVC поддерживает это "из коробки", и нам нужно просто установить флажок в конфигурации: -)

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Для не-SPA обычный подход заключается в сохранении токена аутентификации в сеансе сервера. Когда клиент делает запрос, соответствующий сеанс извлекается через cookie-файл JSESSIONID (или JSESSIONID добавляется в URL, если cookie-файлы отключены).

Я не уверен, почему вы не можете использовать описанный выше подход, но если вы хотите сохранить JWT на клиенте, общий подход:

  • сохранить токен в локальном хранилище браузера или сеансе при его создании, например, window.sessionStorage.authToken = 'token_value';
  • добавьте токен к каждому последующему запросу, установив в заголовке HTTP Authorization значение токена
  • когда пользователь выходит из системы, удалите токен из хранилища браузера
0 голосов
/ 15 мая 2019

Я могу использовать заголовок "Set-Cookie" с токеном JWT со стороны сервера.Клиент будет интерпретировать этот заголовок как установку куки автоматически.В этом случае передача токена на каждый запрос будет выполняться без дополнительных шагов со стороны клиента.
Некоторые подробности описаны здесь https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage

Я буду использовать это как принятый ответ, пока не будет предоставлен лучший вариант.

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