如何在Laravel中根据给定请求验证用户密码?如何根据存储在数据库中的密码哈希检查密码?
答案 0 :(得分:24)
首先,您需要找到根据电子邮件地址或用户名登录的用户,或者您要识别它们,例如:
$user = User::where('email', '=', 'email@address.com')->first();
然后,您需要检查哈希密码,如下所示:
Hash::check('INPUT PASSWORD', $user->password);
根据密码是否匹配,这将返回true或false。
答案 1 :(得分:1)
Laravel登录身份验证:
public function login(Request $request)
{
$email = $request->input('email');
$password = $request->input('password');
$user = User::where('email', '=', $email)->first();
if (!$user) {
return response()->json(['success'=>false, 'message' => 'Login Fail, please check email id']);
}
if (!Hash::check($password, $user->password)) {
return response()->json(['success'=>false, 'message' => 'Login Fail, pls check password']);
}
return response()->json(['success'=>true,'message'=>'success', 'data' => $user])
}
答案 2 :(得分:0)
您可以创建以下方法来查找用户身份验证,如laravel网站上所述进行身份验证:
ReferenceError: Promise is not defined
at deferred (/root/home/flash/Site/node_modules/simple-git/src/util/deferred.js:4:20)
at Git._schedule (/root/home/flash/Site/node_modules/simple-git/src/git.js:1363:23)
at Git._run (/root/home/flash/Site/node_modules/simple-git/src/git.js:1346:12)
at Git.pull (/root/home/flash/Site/node_modules/simple-git/src/git.js:337:19)
at port (/root/home/flash/Site/server.js:588:11)
at Layer.handle [as handle_request] (/root/home/flash/Site/node_modules/express/lib/router/layer.js:95:5)
at next (/root/home/flash/Site/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/root/home/flash/Site/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/root/home/flash/Site/node_modules/express/lib/router/layer.js:95:5)
at /root/home/flash/Site/node_modules/express/lib/router/index.js:281:22
请查看以下链接,了解有关laravel网站身份验证的更多详细信息: https://laravel.com/docs/5.6/authentication#authenticating-users
答案 3 :(得分:0)
$email = Input::get('email');
$user = User::where('email', '=', $email)->first();
if (!$user) {
return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
}
if (!Hash::check(Input::get('password'), $user->password)) {
return response()->json(['success'=>false, 'message' => 'Not Login successfull']);
}
return response()->json(['success'=>true,'message'=>'success', 'data' => $user]);
答案 4 :(得分:0)
步骤1:首先从数据库获取用户数据
$user = User::where('email', '=', $request->input('email'))->first();
第2步:获取用户密码
$user->password
第3步:验证为
if(Hash::check($password, $user->password)) {
return response()->json(['status'=>'true','message'=>'Email is correct']);
} else {
return response()->json(['status'=>'false', 'message'=>'password is wrong']);
}
woo hoo !!!!!您已经完成了:)
答案 5 :(得分:0)
从Laravel 5开始,您可以使用bcrypt()
函数对纯文本进行哈希处理。因此,您可以将该哈希密码保存在数据库中,然后再次比较该哈希密码以进行匹配。
$save_password = bcrypt('plain_text_password');
$check_password = bcrypt('provided_password_while_login_request');
然后比较这两个。你很好走。
或者,如果您想使用Laravel方式:
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// Authentication passed...
return redirect()->intended('dashboard');
}
根据Laravel文档,我引用:“ try方法接受键/值对数组作为其第一个参数。该数组中的值将用于在数据库表中查找用户。因此,在上例中,将通过email列的值检索用户。如果找到该用户,则将存储在数据库中的哈希密码与通过数组传递给该方法的密码值进行比较。对指定为密码值的密码进行哈希处理,因为该框架会在将该值与数据库中的哈希密码进行比较之前自动对值进行哈希处理。如果两个哈希密码匹配,则会为用户启动经过身份验证的会话。 >
如果身份验证成功,则try方法将返回true。否则,将返回false。”