Я делал проекты с Auth на Linux и Windows и никогда не сталкивался с проблемами хэширования. Основной смысл этого заключается в том, что пароли не передают метод Hash :: check с настройкой пользователя по умолчанию. Я посмотрел на большинство ответов на SO, и они являются типичными пользователями, не понимающими, что Hash каждый раз меняет значение, или что для Hash :: check требуется простое значение, а затем хешированное значение от пользователя в db. Поначалу это был отказ от попытки Auth ::, но дальнейшая перспектива кажется проблемой проверки хэша. Я уже прочитал и перечитал Laravel Authentication, чтобы убедиться, что я не пропустил что-то вроде обеспечения того, чтобы поле пароля db было слишком коротким (для максимальной длины 256).Hash :: check Always Failing
Настройка
пользователя Модель
class User extends Eloquent implements UserInterface, RemindableInterface {
protected $fillable = array(
'email',
'password',
);
protected $guarded = array(
'id',
);
//add the UserInterface/RemindableInterface methods here
}
Seed
User::create(array(//could also do DB insert way..
'id'=>1,
'email' => '[email protected]',
'password' => Hash::make('admin'),
));
//User created with correct hash no problem.
Test Post Route
//some other validation above this. Email/password correctly passed from form
$email = Input::get('email');
$password = Input::get('password');
$user = User::where('email', $email)->first();
//gets user with hashed pass fine
$sucess = Hash::check($password, $user->password); //could do $user->getAuthPassword() as well
//always false..
//initially tried Auth::attempt getting the same results because of the internal Hash::check
Пробовал
- Я прошел через проверку вплоть до сравнения дб хэша с солью против вставленного простого прохода, который не удался после сравнения соли.
Я попытался создать свежий пользователя на знак попасть в маршруте (ниже) и пытаюсь этими учетными данными в форме, и он до сих пор не подписал бы в (Фигурном это могло бы быть проблемой семян.)
$ newUser = new Пользователь (массив ( 'email' => '[email protected]', 'password' => Hash :: make ('test') )); $ newUser-> save();
В этот момент, казалось бы, странным password_verify/password_hash вопрос под капотом я нахожусь не догадывались.
Что произойдет, если вы используете Hash: check ('admin', Hash :: make ('admin')) '? – Rob
Работает отлично (возвращает true). Одна из тех ситуаций, которые я ожидал провалить после всего этого, но все равно не могу понять, что я боюсь. –
Тогда, скорее всего, 'Input :: get ('password')' не так, как вы думаете, или '$ user-> password'. У вас есть уникальный индекс по электронной почте? Нет дубликатов писем с разными паролями? У вас есть «создающий» слушатель в модели, который снова вводит пароль? – Rob