#php #codeigniter #authentication #laravel #ion-auth
#php #codeigniter #аутентификация #laravel #ion-auth
Вопрос:
Мне нужно перенести один проект с CI на Laravel. В этом проекте используется Ion Auth Бена Эдмундса (http://benedmunds.com/ion_auth /). Вопрос в том, возможно ли сохранить старые пароли пользователей (чтобы старым пользователям не приходилось восстанавливать свои пароли). В конфигурационном файле Ion Auth установлен sha1 в качестве хэш-метода
$config['hash_method'] = 'sha1';
Ответ №1:
Что вы должны сделать, это что-то вроде этого (полу псевдокод — не проверено — но вы поняли идею):
login()
{
$password = Input::get('password');
$user = User::where('email', '=', Input::get('email');
if (sha1($password) == $user->password)
{
// User old password matches - so now lets re-hash the password as bcrypt
$user->password = Hash::make($password);
}
... do rest of authentication normally
}
В принципе, прежде чем выполнять обычные действия для входа в Laravel, проверьте, совпадает ли старый пароль sha1 (), и если да, преобразуйте необработанный пароль в хэш bcrypt, который использует Laravel.
Это позволяет вам переносить пользователей без сброса пароля.
Комментарии:
1. чудесная скрытая миграция!
Ответ №2:
Это не будет работать точно, поскольку Ion Auth не использует прямой хэш sha1. Вы можете посмотреть в модели, чтобы увидеть алгоритм хеширования, затем вы просто захотите дублировать его в Laravel.
Главное, на что нужно обратить внимание, это проверить вашу конфигурацию и посмотреть, используете ли вы SHA1 или BCrypt, поскольку Ion Auth поддерживает оба.