Как управлять восстановлением сеанса, чтобы все еще соответствовать защите Laravel CSRF? - PullRequest
0 голосов
/ 16 апреля 2020

Я разрабатываю приложение с Laravel 5.8, которое позволяет пользователю входить в систему и просматривать / воспроизводить видео, размещенные в стороннем хранилище. Чтобы пользователям было труднее скопировать ссылки на видео и просмотреть их из моего приложения, я использую встраивание iframe, где sr c указывает на определенный c маршрут с параметрами запроса, один из которых заполнен хешированным идентификатором сеанса. , Я создал, который запускает действие контроллера для:

  1. проверки, совпадает ли значение хэшированного идентификатора сеанса из параметра запроса с текущим идентификатором сеанса
  2. , если да, а затем перенаправить запрос на реальный URL видео и восстановите идентификатор сеанса с помощью метода session () -> reinrate ()
  3. , если нет, отправьте пользователя на 404 HTTP Not Found

Работает как задумано однако, когда пользователи пытаются выйти из системы, они нажимают Laravel Проверка CSRF, и, поскольку идентификатор сеанса был восстановлен, Laravel отклоняет запрос и отправляет сообщение 419 Page Expired. Итак, это проблема.

Я уже попробовал другой подход, который использует токен, сохраненный в паре ключ / значение сеанса с методом session () -> put () или fla sh (), поэтому я выиграл не нужно постоянно перегенерировать идентификатор сеанса, но кажется, что значение сеанса меняется при проверке его с параметром запроса каждый раз, когда видео загружается, приводит к сбоям в логе c, поэтому на видеофрагментах по-прежнему отображается 404 HTTP Not Found.

Временным решением было бы исключить ссылку для выхода из Laravel CSRF-защиты или заменить POST-запрос на выход из системы GET-запросом, оба из которых мне не совсем удобны.

Кто-нибудь сталкивался? похожая проблема? Я ищу лучшее и масштабируемое решение.

Спасибо ...

...