为了账号安全,请及时绑定邮箱和手机立即绑定

登录尝试成功后 Auth::check() 返回 false

登录尝试成功后 Auth::check() 返回 false

PHP
海绵宝宝撒 2022-06-17 10:14:34
我正在尝试制作自定义防护并且我成功了,但是当我尝试使用防护登录时$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());


查看完整回答
反对 回复 2022-06-17
?
不负相思意

TA贡献1777条经验 获得超10个赞

不知道你是否还需要这个,但我刚刚发现问题是系统不知道在哪里存储会话。就像我的情况一样,它发生在我尝试进行某种单点登录时。所以你需要做的是改变

SESSION_DRIVER=file to SESSION_DRIVER=database

然后运行

php artisan session:table


查看完整回答
反对 回复 2022-06-17
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信