【发布时间】:2022-01-02 18:51:09
【问题描述】:
我正在使用 Laravel 5.8,我想确保用户只能每 2 小时提交一次表单(只要会话处于活动状态)。
所以我在 Controller 上尝试了这个:
if(Session::has('request_has_been_sent')){
return redirect()->back()->with('error', 'You just submitted a request and cannot submit a new one');
}else{
$withDraw = WithdrawWallet::create([
'balance_value' => $request->balance_wallet,
'can_draw' => $request->can_draw,
'shaba_number' => $request->shaba_number,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'description' => $request->desc,
'status' => 'pending',
'user_id' => auth()->user()->usr_id,
]);
Session::put('request_has_been_sent');
}
return redirect()->back()->with('success','Your request was sent');
因此,每次用户提交新请求时,都必须设置会话request_has_been_sent。
因此,在用户下次提交表单时,如果会话仍然处于活动状态,则会出现消息 You just submitted a request and cannot submit a new one。
但现在的问题是它不起作用。事实上,用户仍然可以在提交请求后立即提交另一个请求。
这意味着会话没有以某种方式设置。
那么这里出了什么问题?我怎样才能正确地做到这一点?
【问题讨论】:
-
本次会话在哪里到期?
-
@Milad 它应该在 2 小时后自行过期。我希望自动忘记此会话。
-
你在config/session.php文件中设置了定时器吗?
-
@Milad 在 config/session.php 中设置为
'lifetime' => env('SESSION_LIFETIME', 120), -
如果您对配置文件进行了任何更改,请尝试
php artisan optimize重新加载缓存
标签: php laravel session laravel-5.8 laravel-session