@Amenov_Abdul

Как работать с сессиями Laravel?

Здравствуйте!

Я делаю авторизацию на сайте с помощью токенов
При запросе к API в заголовке приходит ключ и сравнивает его в базе данных, ключ живет 1 час
Шифрую юзера id и рядом текущую дату с прибавлением часа а там уже после получения расшифровываю и проверяю
Как можно лучше сделать чтобы избавиться от запросов в базу данных при проверке?
У Ларавеля есть класс Session, как им управлять не могу понять
Мне нужно чтобы когда генерировался ключ при авторизации он также заносился на час в сессию и если сессия есть то пропускал
  • Вопрос задан
  • 539 просмотров
Решения вопроса 1
Palych_tw
@Palych_tw
Типа веб-разработчик
Для авторизации по API давно придумали JWT (Json Web Token). JWT это закодированный в base-64 json объект, состоящий из заголовков, пейлоада и хеша подписи. В пейлоад вы можете засунуть всю инфу, за которой не хотите бегать в базу, имя юзера, роль и т.д. Подлинность токена гарантируется подписью. Подписывается токен на бекенде, при создании, вашей секретной строкой. Для Laravel есть пакет .
Сайт JWT - https://jwt.io
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
JhaoDa
@JhaoDa
LaravelRUS Team
В API не может быть сессий. Надо перестать изобретать велосипед и взять, например, Passport.

Если Passport использовать возможности нет, то надо перестать париться из-за запросов в базу.

Если очень хочется нарушить все общепринятые соглашения и использовать сессии, то надо пойти и почитать про них в документации.
Ответ написан
Комментировать
Alex_Wells
@Alex_Wells
PHP/Kotlin
Сессия в любом случае будет откуда-то вытягиватся по какому-то ключу. Этот "какой-то ключ" будет жить в куках, что уже ломает преимущества API токенов. Более того, по этому "какому-то ключу" будут вытягиватся данные из какого-нибудь редиса. Лучше, чем из базы, но все равно не моментально.

У вас миллионы юзеров одновременно на сайте? Сотни миллионов посещений в день? Нет? Тогда забудьте.

Вам заскейлится вертикально/горизонтально будет в разы проще, чем писать всю авторизацию на каких-то костылях (куках). И возьмите laravel-passport.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы