如何解决即使密码正确,Laravel Hash :: check也返回false
这在我的其他Laravel项目中效果很好,但是我不知道为什么这在我的新项目中不起作用。它们是7.3的相同版本。已经尝试过config:clear
和cache:clear
,但还是没有运气
public function Login(Request $request){
$username = $request->username;
$password = $request->password;
$userQ = User::where('username',$username);
if ($userQ->exists()) {
$user = $userQ->first();
$hashed = $user->Password;
if (Hash::check($password,$hashed)) {
// It doesn't get to this part
$response = array(
"status" => 1,"message" => "Correct"
);
} else {
$response = array(
"status" => 0,"message" => "Invalid credentials"
);
}
} else {
$response = array(
"status" => 0,"message" => "Username does not exist"
);
}
return response()->json($response);
}
$password
是纯文本。 $hashed
是我从数据库获得的密码。这是我的JQuery代码:
var data = {
"username": $("#username").val(),"password": $("#password").val()
}
console.log(data);
Login(data).then((response) => {
console.log(response);
if (!response.status) {
$("#error-prompt").text(response.message);
} else {
}
}).catch((error) => {
});
解决方法
检查用户名是否存在
$userQ = User::where('username',$username)->first ()
if($userQ) {
if (Hash::check($password,$userQ->Password)) {
// Password was check
}
}
,
我认为您的问题出在这里,您没有吸引到用户
更改此项:
$userQ = User::where('username',$username);
对此:
$userQ = User::where('username',$username)->first();
,您将不再需要以下行:
$user = $userQ->first();
然后重试
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。