Могу ли я хранить токен jwt в локальном хранилище при использовании Next.js?

Мы хотим использовать Next.js для нашего приложения, но мы будем использовать в основном рендеринг на стороне клиента для выборки данных. API — это внешний API, который мы будем вызывать. Только домашняя страница будет использовать рендеринг на стороне сервера. Основной API потребует входа в систему для доступа к информационной панели, а содержимое информационной панели зависит от пользователя. Итак, мы хотим использовать выборку данных на стороне клиента в next.js. JWT использовался во внешнем API для авторизации пользователя, а роль пользователя вместе с другими данными пользователя хранилась в токене доступа JWT. Мы новички в Nextjs и хотели знать, как это сделать. Нам нужно, чтобы каждый пользователь отправлял свой токен доступа как часть своего запроса при выполнении запроса API, находясь внутри панели инструментов. Можем ли мы хранить этот токен доступа в их локальном хранилище и передавать его их носителю заголовка при выполнении запросов API?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
481
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Да, ты можешь. После того, как будет сделан запрос на вход и API вернет JWT, вы можете вызвать localstorage, чтобы установить элемент . Затем при выполнении запроса на стороне клиента вы должны вызвать localstorage, чтобы получить элемент, а затем передать его в заголовках запроса. Имейте в виду, вам нужно будет управлять сроком действия.

Другой способ сделать это — при входе в систему API возвращает заголовок для установки файла cookie , который сохраняет JWT в файлах cookie. Затем при выполнении запроса (предоставленного на том же хосте) он будет автоматически передаваться по куки, если вы установите заголовок Access-Control-Allow-Credentials

Лично я бы выбрал файлы cookie, потому что, если они настроены только на HTTP, это повысит безопасность. Это также дает преимущество в том, что у него есть время истечения срока действия, поэтому файл cookie очищается, когда он больше не действителен, и пользователь может закрыть страницу и снова открыть ее, оставаясь при этом в системе.

Надеюсь это поможет.

Могу ли я внедрить систему токенов обновления с помощью этого метода cookie?

kingNodejs 23.04.2023 23:24

@kingNodejs да, вам также нужно будет установить файл cookie для токена обновления, а затем обработать обновление в API. По сути, если токен аутентификации недействителен, но токен обновления действителен, сгенерируйте новый токен и отправьте ответ с set-cookie и новым токеном. Эта статья может помочь вам разобраться с использованием файлов cookie для управления ими (geeksforgeeks.org/jwt-authentication-with-refresh-tokens)

rguarascia.ts 23.04.2023 23:56

Да, можете, но не храните токен в локальном хранилище!!

Auth0 рекомендует хранить токены в памяти браузера как наиболее безопасный вариант.

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

Таким образом, вы защищаете себя от межсайтового скриптинга (XSS), поскольку доступ к локальному хранилищу может получить любой скрипт, загруженный конечным пользователем.

Атаки с использованием межсайтовых сценариев (XSS) — это тип внедрения, при котором вредоносные сценарии внедряются [...]

Наконец, я могу порекомендовать просто хранить ваш токен внутри файла cookie только для http:

Я думаю, что буду использовать только http-подход. Если я собираюсь использовать только http, можно ли хранить его там? Его больше не нужно будет где-то хранить, верно?

kingNodejs 23.04.2023 23:05

Да, точно. Не забудьте сделать его не только http-only, но и «тот же сайт», чтобы предотвратить CSRF Cheatsheetseries.owasp.org/cheatsheets/…

MaieonBrix 24.04.2023 08:41

Другие вопросы по теме