#laravel #hash
#laravel #хэш
Вопрос:
Это отлично работает в других моих проектах 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) => {
});
Комментарии:
1. Имя
$hashed = $user->Password
правильное? Возможно, вы опечатались2. @EncangCutbray нет, все правильно. Я добавил свой код jQuery выше
3. можете ли вы показать, как вы хэшируете пароль для пользователя?
4. @lagbox Оказывается, это потому, что я вводил пустой пароль, в конце концов, что-то не так с моим регистрационным кодом jquery, что поле пароля вводило пустые данные в базу данных
Ответ №1:
Проверьте, существует ли имя пользователя $userQ = User::where('username', $username)->first ()
if($userQ) {
if (Hash::check($password, $userQ->Password)) {
// Password was check
}
}
Комментарии:
1. Он существует, проблема в том, что
Hash::check
не работает, несмотря на правильные учетные данные
Ответ №2:
я думаю, что ваша проблема в том, что вы не получили пользователей:
измените это:
$userQ = User::where('username', $username);
к этому:
$userQ = User::where('username', $username)->first();
и вам больше не нужна эта строка:
$user = $userQ->first();
и повторите попытку