2017-09-22 81 views
0

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

Achievement is once user get registered, automatically sign in that user.


错误是

"Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, string given, called in Server/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 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); 

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

+0

为什么要添加手动登录? –

+0

@PankajMakwana CZ有基于登录 –

回答

5

登录功能需要Authenticatable类型的用户,你刚刚给email这是字符串这就是为什么你得到这个错误,要么使用Auth::loginUsingId($id);

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

或者只是

Auth::login($user); 
+0

'验证:: loginUsingId($用户>标识,TRUE)重定向;'的ID良好的通话。感谢您的答复队友。 +25;) –

+0

如何检查经过身份验证的用户详细信息? –

+0

@StackUser:获取用户信息使用'\验证::用户();' – C2486

0

你需要传递/返回$user这样

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

      Auth::login($user); 

Auth::loginUsingId($user->id, TRUE); 
+0

感谢您的回答+10) –

+0

请接受并给予好评的答案,如果这能解决你的问题: )https://stackoverflow.com/help/someone-answers –

1
$email = $request->email; 
    $password = md5($request->password); 

    if ($request->remember_me == 1) { 
     $cookie = Cookie::queue('username', $email, time() + 31536000); 
    } else { 
     $cookie = Cookie::queue('username', '', time() - 100); 
    } 

    $user = DB::table('tbl_adminuser')->where('email_address', $email)->where('password', $password)->first(); 
    $request->session()->put('userData', $user); 

=>您可以手动登录像这样laravel而是这个

验证::登录

+0

感谢您的答案+10;) –

1

($ userMail-> email,TRUE);

使用此

Auth :: login($ user-> id,TRUE);