laravel Hash:: make keep дает разные результаты


Я хочу использовать аутентификацию в laravel 4 Я изменил имя стола и мобеля

Когда пользователь регистрируется, у меня есть пароль и сохранить его, хэш:

$password = Hash::make(Input::get('password'));

А затем, когда пользователь войдет в систему, я хочу сначала аутентифицировать его/ее. Я делаю это так:

if (Auth::attempt(array('username' => Input::get('usernaem'), 'password' => Hash::make(Input::get('password')))))
{
    return Redirect::intended('dashboard');
}

И это никогда не приносит успеха. Я попытался отладить код, и кажется, что функция Hask::make всегда дает другой результат.

Использую ли я хорошие методы аутентификации? для чего существует решение эта хэш-функция ?

Большое спасибо

2 2

2 ответа:

Во-первых, не используйте Hash при попытке, это должно быть так:

Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password')));

Поскольку вы сохранили пароль в базе данных вручную, сделав хэш с помощью Hash::make(), а затем вставили его в базу данных. Так что это может быть проблемой. Повторно введите пароль в базу данных и вставьте его прагматично, а затем повторите попытку.

Кроме того, вы можете проверить пароль, используя Hash::check('password', $hashedPassword). Подробнее о безопасности читайте на веб-сайтеLaravel. Используйте миграцию для заполнения поддельных данных, не ставьте их вручную данные в базу данных.

Не хэшируйте пароль в функции auth:: attempt() код должен быть таким:

Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password')));

Auth:: attempt () будет хэшировать пароль, а затем проверять, соответствует ли он тому, который хранится в базе данных