代码之家  ›  专栏  ›  技术社区  ›  Ahmad Mobaraki

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

  •  0
  • Ahmad Mobaraki  · 技术社区  · 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 回复  |  直到 7 年前
        1
  •  1
  •   Jignesh Joisar    7 年前

    试着像那样使用

    Auth::login($user, true);
    

    否则就指定这样的守卫

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

    使用id进行第三方登录

    Auth::loginUsingId(1);
    

    登录并“记住”给定用户。。。

    Auth::loginUsingId(1, true);
    
        2
  •  0
  •   Josh    7 年前

    试试这个:

    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 = '/';
    

    在上面链接中描述的模型上

        3
  •  0
  •   Ismoil Shifoev    7 年前

    我为我的社交媒体应用程序做了一个简单的注册,可以进入仪表板。这是我的密码。它帮助了我以前我有同样的问题,但我解决了这个。

    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();
      }
    
        4
  •  0
  •   yasaryousuf    7 年前

    我使用这行代码登录用户

    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();
    }