如何使用 laravel 5.3 手动验证电子邮件和密码?
How to authenticate email and password with laravel 5.3 manually?
大家好
我的问题是我们如何在 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 请求与存储的密码匹配时,它显示错误
请帮助我,谢谢
将您的代码更改为此。
$data = Register::where('email' , $request->email)
->where('password' ,bcrypt($request->password))
->exists();
它不会工作,因为您正在比较不正确的散列的字符串结果。
更改注册功能
$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 的内置哈希功能在注册时生成哈希并计算哈希在登录期间是否有效。
大家好
我的问题是我们如何在 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 请求与存储的密码匹配时,它显示错误 请帮助我,谢谢
将您的代码更改为此。
$data = Register::where('email' , $request->email)
->where('password' ,bcrypt($request->password))
->exists();
它不会工作,因为您正在比较不正确的散列的字符串结果。
更改注册功能
$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 的内置哈希功能在注册时生成哈希并计算哈希在登录期间是否有效。