sou*_*ngh 1 csrf laravel csrf-token laravel-8
我正在使用laravel 6。我希望我的laravel CSRF 令牌每 60 秒过期一次。
配置/会话
'一生' => 60,
小智 5
首先,CSRF 存储在 XSRF-TOKEN cookie 中。参考号:50904763
根据问题(参考: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
)
);
}
Run Code Online (Sandbox Code Playgroud)
where$config用于从现有生命周期中获取会话信息。但是,我$session_life从.env进行解析,以确保您可以尽可能多地进行自定义。
因此,结果很简单,将所有内容配置为所属,但在以秒为单位的区域$this->availableAt($session_life)中session_life。
因此,请session_life在 .env 中设置为 60,如下所示:
CSRF_LIFE="60"
Run Code Online (Sandbox Code Playgroud)
保存并刷新页面或清理缓存和配置后,会话生命周期将为两个小时,但 CSRF 将仅为 60 秒。
希望这有效。
| 归档时间: |
|
| 查看次数: |
2272 次 |
| 最近记录: |