Как создать новый токен CSRF для каждого пользовательского запроса в Laravel? - PullRequest
0 голосов
/ 09 января 2019

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

У меня есть функция переопределения addCookieToResponse в Middleware / VerifyCsrfToken . Добавив $ request-> session () -> РегенератТокен () .

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 (). Есть ли лучший способ реализовать эту технику?

1 Ответ

0 голосов
/ 09 января 2019

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

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

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

return $response; // send response

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...