Где лучше хранить данные о сеансе пользователя?
У меня есть в приложении (react redux) аутентификация пользователя, и мне нужно где то хранить информацию о нём, к примеру банально вывести никнейм в хедере вывести, открыть форму для комментариев итд, подскажите, где и как лучше это делать, я нагуглил несколько вариантов, и мне интересно какие из них применяются в реальных проектах, какие считаются best-practices
1) Хранить в redux сторе, но при этом при перезагрузке или закрытии страницы он слетает, по этому я вижу два варианта:
а) Сохранять redux store в localStorage, Cache API итд.
б) Сохранять токен в localStorage, и при загрузке делать запрос, проверяем токен и в респонсе отдаём инфу которую записываю в редакс стор
2) Просто записывать ответ от апи в localStorage, но напрягает что всё что связано с ним, это работа с парсом строк, а она медленная
3) Видел варианты даже через урлу хранить небольшие данные, но мне интересен кейс где обьект довольно массивен, но не настолько что бы переложить его хранение на АПИ
Дополнительно:
Ответы:
А что будет если пользователь зайдет с двух устройств, или просто в двух браузерах откроет сайт?
В большинстве серьезных сайтов сессию хранят на стороне сервера.
В некоторых простых случаях, когда действительно кроме никнейма и юзерайди ничего не нужно можно хранить в JWT.
- Если откроет с другого устройства или браузера, то ему придётся залогинится, ну а если произойдёт мутация данных, ну тут да, нужно как то отслеживать этот момент.
а можете немного подсказать , что имеется в виду под - "В большинстве серьезных сайтов сессию хранят на стороне сервера."
- Denis1205,
php https://www.php.net/manual/ru/book.session.php
nodejs https://www.npmjs.com/package/express-session
jango https://docs.djangoproject.com/en/4.1/topics/http/... - Denis1205, залогинитЬся*
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для хранения данных о сеансе пользователя веб-приложения можно использовать различные методы и механизмы. Один из наиболее распространенных способов - это использование куки (cookies) или сессий (sessions).
Куки - это небольшие фрагменты данных, которые хранятся на стороне клиента (в браузере) и могут быть использованы для хранения информации о пользователе или его предпочтениях. Куки обычно используются для хранения небольших объемов данных, таких как идентификатор сеанса или предпочтенный язык.
Сессии - это механизм хранения данных на сервере, связанный с конкретным пользовательским сеансом. При использовании сессий на сервере создается уникальный идентификатор сеанса, который отправляется клиенту в виде куки. Вся информация о сеансе хранится на сервере, а идентификатор сеанса используется для связи с конкретным пользователем.
Для PHP существует встроенная функциональность для работы с сессиями. Для начала работы с сессиями необходимо вызвать функцию session_start() в начале скрипта. После этого можно сохранять и получать данные из сессии с помощью глобального массива $_SESSION.
Пример использования сессий в PHP:
// Начало сессии session_start(); // Сохранение данных в сессии $_SESSION['user_id'] = 123; $_SESSION['username'] = 'john_doe'; // Получение данных из сессии $user_id = $_SESSION['user_id']; $username = $_SESSION['username'];
При использовании сессий необходимо учитывать безопасность и защиту от атак, таких как кража сеанса (session hijacking) или подделка сеанса (session fixation). Для этого рекомендуется использовать HTTPS и правильно настраивать параметры сессии, такие как срок действия и безопасность куки.
Таким образом, для хранения данных о сеансе пользователя веб-приложения в PHP рекомендуется использовать сессии, так как они обеспечивают более высокий уровень безопасности и удобства в сравнении с куками.