中間件:
<?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>