Как сгенерировать новый токен CSRF для каждого пользовательского запроса в Laravel?

Я предполагаю генерировать новый токен CSRF для каждого запроса пользователя. Я понимаю, что этот метод не годится и не позволяет пользователю делать одновременный запрос. Но все же хочу это реализовать.

У меня есть функция переопределения addCookieToResponse в Промежуточное ПО / VerifyCsrfToken. Добавив $ запрос-> сеанс () -> регенерировать токен ().

protected function addCookieToResponse($request, $response)
{
    $config = config('session');
    $request->session()->regenerateToken();

    $response->headers->setCookie(
        new Cookie(
            'XSRF-TOKEN', $request->session()->token(), $this->availableAt(60 * $config['lifetime']),
            $config['path'], $config['domain'], $config['secure'], $config['http_only'], false, $config['same_site'] ?? null
        )
    );

    return $response;
}

Токен продолжает меняться, но во время запроса POST я получаю TokenMismatchExcemption из-за того, что токен csrf_token () устарел. Кажется, что crsf_token () вызывается перед addCookieToResponse (). Есть ли лучший способ реализовать эту технику?

Это связано с тем, что запрос POST также генерирует новый токен. Мне любопытно, почему вы все равно захотите это сделать?

Mozammil 09.01.2019 11:20

@Mozammil из-за определенного запроса безопасности я должен это реализовать. Если вы узнаете об этом больше, это вызовет дальнейшие затруднения и недопонимание. Просто нужен способ двигаться вперед с этим.

Gabby 09.01.2019 11:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
2 063
1

Ответы 1

Что ж, это немного странно, чего вы пытаетесь достичь, но я думаю об этом как о промежуточном программном обеспечении:

$response = $next($request); // process petition

$request->session()->regenerateToken(); // regenerate token

return $response; // send response

Пожалуйста поделитесь результатом

Это не работает. Та же ошибка, выданная TokenMismatchExcemption

Gabby 09.01.2019 11:41

Другие вопросы по теме