Learn-json-web-tokens: Интернет-хранилище и прогрессивное улучшение

Созданный на 15 окт. 2015  ·  9Комментарии  ·  Источник: dwyl/learn-json-web-tokens

В № 5, № 46 и большинстве обсуждений в Интернете люди, похоже, по умолчанию используют локальное хранилище / хранилище сеансов для JWT, а не в cookie. Для этого необходимо использовать AJAX во всем приложении, чтобы заголовок можно было каждый раз устанавливать из веб-хранилища. Насколько я понимаю, это сделано для предотвращения подделки межсайтовых запросов (и, по сути, для этого используется политика одного и того же происхождения).

Как это сочетается с прогрессивным улучшением, когда некоторые устройства вообще не поддерживают javascript?

enhancement question

Самый полезный комментарий

Не обязательно, хотя это зависит от вашего набора инструментов. Angular, например, позволяет вам установить это один раз .. я думаю, вы можете легко справиться даже с jquery.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Другая проблема с файлами cookie в качестве транспортного уровня для токенов заключается в том, что вы используете 2 тайм-аута и не можете избежать проблем с CORS. Файлы cookie усложняют доступ к веб-службам RESTful. Намного проще создать curl one liner для доступа к ресурсу с помощью токена, чем объединение в cookie.

Все 9 Комментарий

_Another_ _GREAT _ Вопрос от _Wizard_! : +1:
В этом микро-примере я думаю, что "_Ok_" использовать localStorage .
Давайте будем честными, в наши дни все используют React, не заботясь о доступности.
Все крутые ребята _ гораздо_ больше заинтересованы в _Shiny New Frameworks_, чем _Progressive Enhancement _...

Тем не мение...
В нашем _actual_ приложении мы используем cookies _precisely_ для обратной совместимости и прогрессивного улучшения.
Вот почему мы добавили опцию в JWT2 ... см .: https://github.com/dwyl/hapi-auth-jwt2#want -to-sendstore-your-jwt-in-a-cookie

Итак, в заключение: я бы добавил localStorage к примеру в этом репо и добавил comment информирующий людей, что использование файлов cookie для хранения JWT - это "_Ohkay_", потому что вы по-прежнему получаете всю _горизонтальную масштабируемость_ и безопасность. преимущества использования JWT при сохранении _effort_ необходимости устанавливать / получать JWT и добавлять его в заголовки при каждом запросе ...

@rjmk и @nelsonic

есть ли конкретная причина, по которой JWTS, хранящиеся в локальном хранилище, должны быть отправлены в заголовках, или есть что-то уязвимое / "неправильное" в использовании https://www.npmjs.com/package/node-localstorage?

@Jbarget , вы создаете "_Universal_", который требует, чтобы у вас был доступ к localStorage на сервере? Если это ваш вариант использования, то модуль node-localstorage будет служить вашей цели.
_Однако_ вам все равно придется _ вручную_ отправлять JWT в header чтобы отправить его обратно на сервер в запросах "AJAX" ... так что нет большого преимущества в использовании _module_, если все, что вы хотите сделать получить / установить токен в / из localStorage ...

@nelsonic, мы, вероятно, в конечном итоге

@Jbarget есть ли у вас возражение против сохранения JWT в файле cookie? (_Это упрощает вашу жизнь ..._)

@nelsonic Нет возражений, правильно ли я считаю, что это упрощает мою жизнь, поскольку я могу получить доступ к файлам cookie из любого места в приложении, а не из локального / сеансового хранилища?

Это упрощает ваше приложение, поскольку после _установки_ файла cookie сервером _все_ отправленные / полученные запросы всегда будут содержать файл cookie. Это означает, что вам _ никогда_ не нужно _ думать_ об этом после этого момента.
Напротив, сохранение JWT в localStorage означает, что у вас не может быть взаимодействия, отличного от ajax, и вы должны помнить SET auth заголовок

Не обязательно, хотя это зависит от вашего набора инструментов. Angular, например, позволяет вам установить это один раз .. я думаю, вы можете легко справиться даже с jquery.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Другая проблема с файлами cookie в качестве транспортного уровня для токенов заключается в том, что вы используете 2 тайм-аута и не можете избежать проблем с CORS. Файлы cookie усложняют доступ к веб-службам RESTful. Намного проще создать curl one liner для доступа к ресурсу с помощью токена, чем объединение в cookie.

Этот выпуск автоматически закрывается, так как ему больше года. Не стесняйтесь открывать его повторно, если он по-прежнему актуален для вашего проекта.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

KumarS-Naveen picture KumarS-Naveen  ·  3Комментарии

nelsonic picture nelsonic  ·  5Комментарии

joepie91 picture joepie91  ·  18Комментарии

NE-SmallTown picture NE-SmallTown  ·  5Комментарии

rhewitt22 picture rhewitt22  ·  5Комментарии