Laravel无法以编程方式登录用户

时间:2018-12-03 04:11:54

标签: laravel laravel-5.7

我试图在注册后自动登录用户,所以我覆盖了registered()函数:

protected function registered(Request $request, $user)
{
    Auth::login($user);
    logger('check', [Auth::check()]);
    return redirect('/');
}

但是用户重定向到登录页面!我还尝试了以下代码:

Auth::loginUsingId($user->id);
logger('check', [Auth::check()]);
return redirect('/');

但结果相同!记录器也记录Auth::check()行,结果是:check [true]

4 个答案:

答案 0 :(得分:0)

尝试一下:

Auth::onceUsingId($user->id);

如果没有会话和Cookie的用户登录;

希望有帮助

更新

您需要按照以下说明将重定向更改为登录重定向:

https://laravel.com/docs/5.7/authentication#included-authenticating

并按如下所示使用记住的布尔值:

https://laravel.com/docs/5.7/authentication#other-authentication-methods

所以您的代码就是:

Auth::login($user, true);

重定向将通过以下方式完成:

protected $redirectTo = '/';

有关以上链接中所述的模型

答案 1 :(得分:0)

  

尝试那样使用

登录并“记住”给定的用户...

Auth::login($user, true);

否则请指定后卫

Auth::guard('admin')->login($user);

使用ID登录第三种方式

Auth::loginUsingId(1);

登录并“记住”给定的用户...

Auth::loginUsingId(1, true);

答案 2 :(得分:0)

我为自己的社交媒体应用做了一个简单的注册,可以使用仪表板。这是我的代码。以前我遇到同样的问题,但对我有帮助,但是我解决了。

public function postSignUp(Request $request)
  {
    $this->validate($request,[
        'email' => 'required|email|unique:users',
        'first_name'=> 'required|max:120', 
        'password'=>'required|min:4'
    ]);
       $email = $request['email'];
       $first_name = $request['first_name'];
       $password = bcrypt($request['password']);

       $user = new User();
       $user->email = $email;
       $user->first_name = $first_name;
       $user->password = $password;
       $user->save();
       Auth::login($user);
       return redirect()->route('dashboard');

  }

易于使用的登录功能。

public function postSignIn(Request $request)
  { 
        $this->validate($request,[
        'email' => 'required', 
        'password'=>'required'
        ]);
      if(Auth::attempt(['email'=> $request['email'], 'password'=> $request['password']])) 
      {
          //Log in users if true e mail and pass go to dashboard
          return redirect()->route('dashboard');
      }
      return redirect()->back();
  }

答案 3 :(得分:0)

我使用以下代码行登录用户

public function login(Request $request)
{
    if(Auth::attempt(['email' => $request->email, 'password' => $request->password]))
    {
        $user = \App\User::where('email', $request->email)->first();
        $this->guard('web')->login($user);
        # user logged in and remembered
        }
    else {
       # didn't match
    }
}

protected function guard()
{
    return Auth::guard();
}