大家好>
我的问题是如何在laravel 5.3中验证我们的电子邮件和密码?
我这里没有使用Auth,我正在尝试手动创建登录系统
这是用户注册方法
public function post_register(Request $request){
$this->validate($request , [
'username' => 'required|' ,
'email' => 'required|email|unique:registers' ,
'password' => 'required|min:6',
'cp' => 'required|same:password']);
$data = new Register;
$data->username = $request->username;
$data->email = $request->email;
$data->password = bcrypt($request->password);
$data->save();
return Redirect::back()->with('success' , 'user registred');
}
这是登录方式
public function post_login(Request $request){
$this->validate($request , [
'email' => 'required|email' ,
'password' => 'required']);
$data = Register::where('email' , $request->email)->exists();
if($data){
Session::put('email' , $request->email);
return Redirect::to('profile');
}
else{
return Redirect::to('login');
}
此代码正常运行,但问题是如果我输入注册的电子邮件和未注册的密码,则会重定向到个人资料页面。 我无法使用电子邮件和密码验证用户,因为我在密码中使用bcrypt()哈希函数,当我尝试将http请求与存储的密码匹配时,它显示错误 请帮帮我,谢谢
答案 0 :(得分:2)
它不会工作,因为你正在比较不正确的哈希的字符串结果。
更改注册功能
$data->password = Hash::make($request->password);
更改您的登录功能
public function post_login(Request $request){
$this->validate($request , [
'email' => 'required|email' ,
'password' => 'required']);
$data = Register::where('email' , $request->email)->first();
if($data){
if(Hash::check($request->password, $data->password)){
Session::put('email' , $request->email);
return Redirect::to('profile');
}
}
return Redirect::to('login');
}
<强>解释强>
这些更改允许您使用Laravel内置的哈希功能来生成注册时的哈希值&amp;计算哈希在登录期间是否有效。
答案 1 :(得分:0)
将您的代码更改为此。
$data = Register::where('email' , $request->email)
->where('password' ,bcrypt($request->password))
->exists();