2017-09-22 16 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のユーザーを必要とし、あなたはちょうどあなたがAuth::login()機能が期待Auth::loginUsingId($id);

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

それとも

Auth::login($user); 
+0

'Auth :: loginUsingId($ user-> id、TRUE);'良いコールオンIDです。答えの友達に感謝します。 +25;) –

+0

認証されたユーザーの詳細を確認する方法は? –

+0

@StackUser:ユーザーの詳細を取得するには、\ Auth :: user();を使用してください。 – C2486

1

をこのエラーを取得し、いずれかを使用する理由文字列のthatsですemailを与えられました認証可能なオブジェクト。あなたはUserクラスでめちゃくちゃしていない場合、これはあなたが合格するために必要なものになります

Auth::login($user, true);

参考:https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

+0

答えは+10;) –

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

回答ありがとうございました;) –

+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); 

=>することはでき

+0

答えは+10;) –

1

代わりにこの

のAuth ::ログインのlaravelで、このような手動ログイン($ userMail-> email、TRUE);

この

のAuth ::ログイン(する$ user-> ID、TRUE)を使用します。

関連する問題