php - 如何为 Laravel 中的每个用户请求生成新的 CSRF Token?
问题描述
我想为用户提出的每个请求生成新的 CSRF 令牌。我确实理解这种技术不好,它不允许用户同时提出请求。但我仍然希望实施它。
我在Middleware/VerifyCsrfToken中有覆盖函数addCookieToResponse。通过添加$request->session()->regenerateToken()。
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 请求期间,由于csrf_token()令牌已旧,我收到 TokenMismatchExcemption。似乎在 addCookieToResponse() 之前调用了 crsf_token()。有没有更好的方法来实现这种技术?
解决方案
好吧,您要实现的目标有点奇怪,但我认为这就像一个中间件:
$response = $next($request); // process petition
$request->session()->regenerateToken(); // regenerate token
return $response; // send response
请分享结果
推荐阅读
- ansible - 运行一个未包含在剧中但属于角色的 ansible 任务
- r - 如何替换 R 矩阵中匹配行名、列名和值的值
- excel - 如何使用 VBA 插入包含数字变量的公式
- angular - 部署在 Kubernetes 入口路径上时无法获得 Angular 7 路由
- java - 播放框架泄漏 jar 文件导致“打开的文件过多”错误
- c++ - 计算闰年 - 表达式必须有一个可修改的左值
- c# - 带有接口列表的接口,如何选择接口实现的一种类型
- php - 在for循环中添加所有先前的数字以获取当前数字
- c++ - C++ if 语句不打印所需的输出
- c# - 对从 AutoMapper 映射的实体使用 AsNoTracking