Laravel 5.2 +修改默认登录行为+使用缓存驱动程序阵列时,Throllting停止工作

时间:2016-05-02 06:05:09

标签: php laravel-5 laravel-5.1 laravel-5.2

我在Laravel 5.2中创建了新项目,并尝试修改Auth-Login的默认行为。

创建了一个名为postLogin的新方法,该方法在提交登录表单时被调用。

下面是为了在postRegister方法中实现登录限制而编写的代码。

protected function postLogin(AuthLoginRequest $request){

    $credentials = $this->getCredentials($request);
    $credentials['is_activated'] = "Yes";

    $remember = $request->has('remember');

    $throttles = $this->isUsingThrottlesLoginsTrait();


    if ($throttles && $this->hasTooManyLoginAttempts($request)) {
        return $this->sendLockoutResponse($request);
    }

    if (Auth::guard($this->getGuard())->attempt($credentials, $remember)) {
        // add login in case of success
        return $this->handleUserWasAuthenticated($request, $throttles);
    } else {
        if ($throttles) {
            $this->incrementLoginAttempts($request);
        }

        return redirect("/login")
            ->withInput($request->only('email', 'remember'))
            ->withErrors([
                $this->loginUsername() => $this->getFailedLoginMessage(),
            ]);
    }
}

当我将缓存驱动程序保存到"文件时,这可以正常工作。" 当我将缓存驱动程序保留到" array"时,此代码不起作用。

当缓存驱动程序=" array"?

时,有人可以通知我我缺少什么吗?

1 个答案:

答案 0 :(得分:0)

您应该注意两件事:

  • ThrottlesLogins驱动程序只是将任何缓存的值存储在内部数组中。请求之间不保留这些值。

  • 如果您查看The values of ($id_from= 1 and $id_to= 4) 特征,您可以看到它在每次登录失败时递增缓存计数器。

这就是它不起作用的原因。

来自Laravel文档:

注意:阵列驱动程序通常用于运行测试以防止会话数据持久存在。