#php #laravel #session #laravel-5.2 #session-variables
#php #laravel #сеанс #laravel-5 #переменные сеанса
Вопрос:
Мне нужно резервировать элементы в моей базе данных, когда пользователь добавляет их в свою корзину. В настоящее время я использую идентификатор сеанса ( Session::getId()
), однако он восстанавливается при входе в систему. Хотя вы можете совершать покупки в качестве гостя, для оформления заказа вам необходимо зарегистрироваться.
Если я посмотрю на все переменные сеанса с $request->session()->all()
, с которыми я столкнулся _token
, это выглядит как уникальная строка, и она не восстанавливается при входе в систему, поэтому я думал использовать это для своих корзин?
Безопасно ли это?
В противном случае мне пришлось бы сгенерировать свой собственный uuid в PHP и сохранить их как basket_id или что-то в этом роде, это избавило бы меня от необходимости это делать.
Заранее большое спасибо.
Комментарии:
1.
_token
предназначен для защиты от csrf-атаки. Подробнее здесь: laravel.com/docs/5.3/csrf2. @ventaquil идеально, именно то, что я искал.
Ответ №1:
Хорошо, итак, я копирую свой комментарий сюда:
_token предназначен для защиты от csrf-атаки. Подробнее здесь:laravel.com/docs/5.3/csrf
поле_token уникально для каждого запроса. Вы можете отправить этот токен как переменную запроса или cookie.
Помните — по умолчанию для всех post-действий требуется это поле (одно из промежуточных программных средств следит за этим).
У вас есть доступ к значению токена с помощью функции csrf_token()
— или csrf_field()
для получения поля ввода HTML.
Ответ №2:
В Laravel есть драйвер базы данных для сеансов, https://laravel.com/docs/5.3/session#driver-prerequisites .
Используя это, вы можете ссылаться на таблицу сеансов в вашей таблице зарезервированных элементов. Вы узнаете, является ли пользователь гостем.
Вы даже можете просмотреть последнее действие и основывать свои зарезервированные элементы на этом.
Комментарии:
1. Я буду использовать redis для сеансов, думаю, я буду использовать подход с идентификатором корзины.