我正在尝试制作自定义防护并且我成功了,但是当我尝试使用防护登录时$this->attemptLogin($request)返回true,但之后直接Auth::check()返回该方法false/** * Handle a login request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse * * @throws \Illuminate\Validation\ValidationException */public function login(Request $request){ $this->validateLogin($request); // If the class is using the ThrottlesLogins trait, we can automatically throttle // the login attempts for this application. We'll key this by the username and // the IP address of the client making these requests into this application. if (method_exists($this, 'hasTooManyLoginAttempts') && $this->hasTooManyLoginAttempts($request)) { $this->fireLockoutEvent($request); return $this->sendLockoutResponse($request); } if ($this->attemptLogin($request)) { // Returns true dd(Auth::check()); // Returns false return $this->sendLoginResponse($request); } // If the login attempt was unsuccessful we will increment the number of attempts // to login and redirect the user back to the login form. Of course, when this // user surpasses their maximum number of attempts they will get locked out. $this->incrementLoginAttempts($request); return $this->sendFailedLoginResponse($request);}使用的模型扩展Illuminate\Foundation\Auth\User我还覆盖了该getAuthPassword方法,因为您使用access_code我还在使用中定义$guard并为它做了一个保护auth.phpsession as the driver我读过类似的问题,但他们建议应该调用 PKid和 be auto_increment。我确实满足这些条件。我还覆盖了guardLoginController 中的方法,它包含该use AuthenticatesUsers;行我正在使用 Laravel 6.5.1 版我也没有收到错误。
2 回答
皈依舞
TA贡献1851条经验 获得超3个赞
您的默认守卫是web
. 当您在Auth::...
未指定守卫的情况下调用时,它将使用默认守卫。
在您LoginController
中,您正在定义要用作方法的contestant
防护的防护guard
。你需要检查那个守卫而不是网络守卫。您可以使用从该方法返回的守卫来检查,而不是Auth::check()
:
dd($this->guard()->check());
不负相思意
TA贡献1777条经验 获得超10个赞
不知道你是否还需要这个,但我刚刚发现问题是系统不知道在哪里存储会话。就像我的情况一样,它发生在我尝试进行某种单点登录时。所以你需要做的是改变
SESSION_DRIVER=file to SESSION_DRIVER=database
然后运行
php artisan session:table
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消