我使用这些代码来停止多个表单提交。但它不起作用。我发现 $ form_token 和 $ token 始终相同。我写了会话([' form_token' => null])。但它没有用。为什么?
// make token
function form_token()
{
session(['form_token' => Str::random(40)]);
return session('form_token');
}
//check token
function check_token($form_token, $token)
{
if ($form_token == $token) {
session(['form_token' => null]);
} else {
throw new RuntimeException('Do not submit multiple times');
}
}
// middleware
public function handle($request, Closure $next)
{
if (!in_array($request->method(), ['HEAD', 'GET', 'OPTIONS'])) {
$form_token = $request->input('form_token');
$token = session('form_token');
check_token($form_token, $token);
}
}