JWT подается через httponly cook ie, чтобы выяснить, вошел ли он в систему. - PullRequest
0 голосов
/ 24 марта 2020

При создании javascript SPA (одностраничного приложения) мне нужно отображать некоторые страницы по-разному в зависимости от того, вошел ли пользователь в систему или нет.

Auth обрабатывается JWT, который подается через httpOnly cook ie и защищенные заголовки.

Это оставляет повара ie недоступным из SPA javascript, что, в свою очередь, означает, что я не знаю, вошел ли пользователь в систему или нет.

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

  • отправить другого повара ie, который не является httpOnly с каким-либо флагом, таким как идентификатор сеанса или идентификатор пользователя с датой истечения срока действия и на стороне клиента JS, используйте эту команду ie, чтобы проверить, аутентифицирован ли пользователь.

  • создайте конечную точку на сервере API, что-то вроде /is-logged-in и сделайте http-вызов из JS, чтобы проверить, аутентифицирован ли пользователь перед отображением страницы.

  • хранить JWT локально без файлов cookie (очевидно, нет go из-за соображений безопасности и количества кода, который мне придется написать для предотвращения всевозможных атак кражи)

I Я опаздываю на вечеринку SPA, но я Я уверен, что это должно быть долго решаемой проблемой. Я не могу видеть что-то очевидное, я думаю.

Пожалуйста, укажите мне правильное направление.

Для полноты, вот некоторые оставшиеся без ответа, полуотвеченные связанные сообщения

1 Ответ

0 голосов
/ 25 марта 2020

У вас есть два основных варианта:

Сохраните, чтобы пользователь вошел в систему со вторым не http-поваром ie, срок действия которого истекает

Плюсы

  • Никаких дополнительных HTTP-запросов не требуется
  • Никаких задержек, прежде чем вы узнаете, вошел ли пользователь в систему

Минусы

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

Использовать HTTP-запрос, который сообщит вам, вошел ли пользователь в систему или нет

Плюсы

  • Меньше подверженных ошибкам
  • Нет необходимости менять бэкэнд

Минусы

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