Обработка просроченного токена в Laravel

Шаблоны должны использоваться в заголовках, потому что компилятор должен создавать экземпляры разных версий кода в зависимости от параметров, заданных / выведенных для параметров шаблона. Помните, что шаблон не представляет собой код напрямую, а шаблон для нескольких версий этого кода. Когда вы компилируете функцию non-template в файле .cpp, вы компилируете конкретную функцию / класс. Это не относится к шаблонам, которые могут быть созданы с использованием разных типов, а именно, если при замене параметров шаблона конкретными типами необходимо исправить конкретный код.

Была функция с ключевым словом export, которая была предназначенный для отдельной компиляции. Функция export устарела в C++11 и, AFAIK, только один компилятор реализовал ее. Вы не должны использовать export. Отдельная компиляция невозможна в C++ или C++11, но, возможно, в C++17, если понятия в нее входят, мы могли бы иметь некоторый способ отдельной компиляции.

Для отдельной компиляции, которая должна быть достигнута, разделить проверка шаблона тела должна быть возможна. Кажется, что решение возможно с концепциями. Взгляните на этот документ , недавно представленный на совещании по стандартам. Я думаю, что это не единственное требование, поскольку вам все равно необходимо создать код кода шаблона в коде пользователя.

Отдельная проблема компиляции для шаблонов, я думаю, это также проблема, возникающая при миграции на модули, которые в настоящее время работают.

35
задан Moppo 16 July 2015 в 11:54
поделиться

1 ответ

Согласно эти документы :

Laravel автоматически генерирует "маркер" CSRF для каждой сессии активного пользователя, управляемой приложением.

Это означает для любого человека, код csrf является тем же для любой страницы, которую посещает пользователь. Это становится недопустимым, как только Ваша сессия истекает. Таким образом при установке времени жизни на 50 лет маркер CSRF только истечет после 50 лет, который кажется приемлемым для меня. (Я не могу предположить, что любой имеющий неиспользованную вкладку открывается в течение 50 лет, но Вы никогда не знаете).

Это может достигнутый как это в config/session.php:

 /*
    |--------------------------------------------------------------------------
    | Session Lifetime
    |--------------------------------------------------------------------------
    |
    | Here you may specify the number of minutes that you wish the session
    | to be allowed to remain idle before it expires. If you want them
    | to immediately expire on the browser closing, set that option.
    |
    */

    'lifetime' => 60 * 24 * 365 * 50, // Set session lifetime to 50 year

    'expire_on_close' => true,
<час>

, Почему мне не нравится ни один из вышеупомянутых ответов:

  1. Ответ от Labs UX:

Сохраняет сессию навсегда живой и воссоздает новый CSRF token после установленного времени. Это - проблема, если у пользователя есть несколько открытых касаний. Каждый раз одно касание обновляется CSRF маркер, все другие вкладки становятся недопустимыми.

  1. Ответ от Ryan

Этот ответ лучше, потому что он не изменяет CSRF token, таким образом, несколько вкладок не произведены. Это просто сохраняет сессию изобилующей совершением js звонка после установленного времени с setInterval. Однако setInterval не работает, в то время как ПК засыпает. Таким образом, сессия может истечь, когда ПК засыпает, который является также likly сценарием. Поэтому вместо того, чтобы пытаться поддержать сессию js-вызовами, я просто увеличил бы время жизни до 50 лет.

  1. Ответ от paulalexandru

, Отображающего ошибку, когда сессия приведена к таймауту, хорошо, но было бы лучше, если проблемы никогда не происходит. Установка времени жизни к 6-му недостаточно, потому что его likly, что вкладка может быть открыта в течение нескольких дней.

  1. Другие ответы

Все другие ответы предлагают отключить CSRF для маршрута в вопросах, но это не, конечно, никакая опция, потому что он создает большую угрозу безопасности.

0
ответ дан 27 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

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