中间件:
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class LimitFormRepeatSubmit extends Middleware
{
public function handle($request, Closure $next)
{
/****************************************
* 1. 前端自己生成一个 form_token
* 2. 如果 session 已经存在,则告诉重复提交
****************************************/
$token = $request->input('form_token');
if (cache()->has($token)) {
return back()->with('status', '请不要重复提交');
}
//给token赋值,有效期1秒,1秒内不能重复提交
cache([$token => 'value'], 1);
return $next($request);
}
}
前台代码:
<form action="">
<input type="hidden" name="form_token" value="{{ str_random(40) }}">
</form>