首先,CSRF 存储在 XSRF-TOKEN cookie 中。参考:50904763
根据问题(Ref:51615122),我们更改app/Http/Middleware/VerifyCsrfToken.php中的配置,添加一个名为addCookieToResponse的新方法
use Symfony\Component\HttpFoundation\Cookie;
public function addCookieToResponse($request, $response) {
$config = config('session');
$session_life = env('CSRF_LIFE');
$response->headers->setCookie(
new Cookie(
'XSRF-TOKEN', $request->session()->token(), $this->availableAt($session_life),
$config['path'], $config['domain'], $config['secure'], false, false, $config['same_site'] ?? null
)
);
}
其中$config 用于从现有生命周期中获取会话信息。但是,我从 .env 解析 $session_life 以确保您可以尽可能多地自定义。
因此,结果很简单,将所有内容配置为属于 $this->availableAt($session_life) 区域,其中 session_life 以秒为单位。
所以,请在 .env 中将session_life 设置为 60,如下所示:
CSRF_LIFE="60"
在您保存并刷新页面,或清理缓存和配置后,Session LifeTime 将是两个小时,但 CSRF 将只有 60 秒。
希望这行得通。