拉拉维尔手动登录功能

我在Laravel 5.5中使用手动登录功能。卡在登录中。并检查所有(5个相关)堆栈链接,没有发现任何线索。

成就是用户注册后,自动登录该用户。


错误是

“类型错误:参数 1 传递给 Illuminate\Auth\SessionGuard::login() 必须实现接口 Illuminate\Contracts\Auth\Authenticatable,给定字符串,在 Server/vendor/laravel/framework/src/Illuminate/Auth/AuthManager 中调用.php第 294 ◀ 行”

if ($validator->fails()) {

//            $messages = $validator->messages();

            return Redirect::to('register')
                ->withErrors($validator)
                ->withInput();

        } else {

            $email = Input::get('email');
            $user = new user;
            $user->name     = Input::get('name');
            $user->email    = Input::get('email');
            $user->password = Hash::make(Input::get('password'));

            $user->save();
//            $userMail = $user->find($email);
            $userMail = User::where('email','=',$email)->first();
            Auth::login($userMail->email, TRUE);

我做错了什么。请指导我。


答案 1

登录函数需要用户类型,你刚刚给出了哪个是字符串,这就是为什么你得到这个错误,要么使用AuthenticatableemailAuth::loginUsingId($id);

 $user = User::where('email','=',$email)->first();
 Auth::loginUsingId($user->id, TRUE);

或者只是

Auth::login($user);

答案 2

而不是这个

身份验证::登录($userMail->电子邮件,TRUE);

使用这个

身份验证::登录($user->id, TRUE);


推荐