我是Laravel的新手。我试图通过使用会话设置失败登录尝试的计数器。但是我无法使其发挥作用。这是我的UserController处理注册,登录和注销。我想要一个全局变量,我可以从登录表单访问它并强制用户在登录失败超过2次时使用CAPTCHA
req.socket.bytesRead
public function postSignIn(Request $request)
{
$failedAttempt = Session::get('FailedAttempts');
if(!isset($failedAttempt)) $failedAttempt = 0;
$this->validate($request, [
'email' => 'required',
'password' => 'required'
]);
if (Auth::attempt(['email' => $request['email'], 'password' =>
$request['password'], 'active' => 1])) {
return redirect()->route('dashboard');
} else {
$failedAttempt++;
Session::put('FailedAttempts', $failedAttempt);
dd("Counter: " . $failedAttempt); //<- Always 1!!!
}
在下次失败的登录尝试时永远不会增加。我已经尝试了$failedAttempt
,Session::set('FailedAttempts', $failedAttempt);
但仍然没有运气
答案 0 :(得分:0)
我相信你在某些方面犯了错误。试试这个请求将值插入/放入会话
https://laracasts.com/discuss/channels/eloquent/how-to-set-a-session-variable?page=1
答案 1 :(得分:0)
非持久性会话的秘密我还不知道,但我的解决方案是使用Session::save()
:
Session::put('FailedAttempts', $failedAttempt);
Session::save();
我在这里找到了答案:https://laracasts.com/discuss/channels/general-discussion/l5-sessions-dont-persist
有些人将Nginx + php-fpm归咎于