Добрый день,
Я создаю программу, где все, что мне нужно для учетных данных, это пароль.
$password = Input::get('password'); //eg: admin
и когда я пытаюсь сравнить его со значением на базе данных, которое уже хэшируется.
$user = DB::table('users_table')->where('password',$password)->get();
//eg: hashed value for admin is '$10$zYy1fGLPh/eI/sj8YmkN8.sTTkD4k9t/gwrkgGWOIufHvRYhKwTay'.
Я не могу получить какой-либо успешный фильтр с ним. Нужны ли для этого специальные функции? Спасибо за помощь.
Если вы используете встроенный в Laravel Hash::make()
Вы не сможете сделать это так, как вы пытаетесь.
Что происходит, когда вы хэшируете пароль (используя хэш Laravel или PHP password_hash()
является то, что вы получаете уникальный хэш каждый раз.
Вам действительно нужно указать имя пользователя, затем извлечь хэш пароля из этой записи и проверить его с помощью Hash::check()
,
В противном случае вам нужно будет извлечь все пароли из базы данных, пройти их и проверить каждый. В зависимости от «стоимости» в алгоритме хеширования, это может быть дорогостоящей операцией, если у вас много пользователей.
Теперь я не знаю, есть ли у вас несколько пользователей в вашей таблице, но если вы это сделаете, что произойдет, если у них будет один и тот же пароль?
Кажется, вы пытаетесь сравнить обычный $password
вместо этого попробуйте его хешировать, затем сравните, например,
DB::table('users_table')->where('password', some_hash_function($password))->get()
Если пароль в вашей базе данных хэширован, то вам нужно будет хэшировать пароль, который вводит пользователь, используя тот же механизм, который вы использовали при сохранении хешированного пароля в базе данных, прежде чем использовать его в качестве критерия поиска. В противном случае, конечно, он не будет соответствовать значению в базе данных, даже если это правильное, не хэшированное значение.
$password = Input::get('password'); //eg: admin
$password = your_hash_function($password);
$user = DB::table('users_table')->where('password',$password)->get();
Вы можете использовать проверку хэша
Hash::check('password', $password);
Какой метод вы использовали для хэширования пароля?
Затем вы должны сравнить пароль в вашей базе данных с тем же методом хеширования для пароля, полученного из ввода