2017-07-03 23 views
3

Laravelの認証システムをゼロからセットアップしようとしていますが、登録したユーザーにログインさせることはできません。Laravelに登録した後、ユーザーがログインできない

ユーザー格納するマイRegisterController:

public function store() 
{ 

    $this->validate(request(),[ 
     'name'=>'required', 
     'email'=>'required', 
     'password'=>'required' 
    ]); 

    $user = User::create(request(['name', 'email','password'])); 

    auth()->login($user); 

    return redirect()->home(); 
} 

は今、すべてが素晴らしい作品が、私は、私は、ログインカントフォームにログインするために行くときここでログインを扱う私のSessionsControllerです。

public function store() 
{ 

if(!auth()->attempt(request(['email','password']))) 

    return back(); 
} 
return redirect()->home(); 
} 

私がここに間違っていると私はユーザーにログインできないのですか?

+0

私はあなたが既に 'AUTH()でログインしているためだと思う - >ログイン($ユーザー);'ログアウトしようとログインしてください! – Maraboc

+0

私はauth()セッションを破壊するログアウトリンクを持っていますが、ログインしてもう一度ログインしてください。 –

答えて

8

この場合、ユーザーを登録すると、パスワードがデータベース上の平文として保存されていることがわかりますが、これは非常に間違っています。

attempt()がユーザーにログインしようとしているときに問題が発生すると、電子メールとパスワードが取得され、データベースのハッシュされたパスワードと比較するためのパスワードがbcryptされます(あなたの場合は平文として保存されます)。

ユーザーbcrypt()そうのようなパスワードを作成する場合:

public function store() 
    { 

     $this->validate(request(),[ 
      'name'=>'required', 
      'email'=>'required', 
      'password'=>'required' 
     ]); 


     $user = User::create([ 
      'name' => request('name'), 
      'email' => request('email'), 
      'password' => bcrypt(request('password')) 
      ]); 


     auth()->login($user); 

     return redirect()->home(); 
    } 
+0

チャームのように機能しています。ありがとう –

関連する問題