2017-07-03 67 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

在这种情况下,我发现当你注册一个用户时,你将他们的密码保存为数据库上的PLAIN TEXT,这是非常错误的。

现在问题发生在attempt()正在尝试登录用户时,它正在获取电子邮件和密码将密码与数据库中的哈希值进行比较(您的情况下,您将保存为纯文本)。

当您创建用户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

它的工作就像一个魅力。谢谢 –