Как переопределить проверку пароля Symfony, чтобы иметь возможность проверять различные типы хэшей - PullRequest
2 голосов
/ 28 марта 2012

У меня есть старая база данных пользователей, которая содержит хэши паролей, которые мне не нравятся.Я хотел бы, чтобы эти хеши были обновлены до новой формы хеша (bcrypt) при входе в систему.

Я использую FOSUserBundle для управления пользователями и пакет bcrypt Эльнура в качестве кодера безопасности.Есть ли простой способ подключиться к механизму проверки пароля, чтобы добавить такой алгоритм:

if passwordHash is using old format
  oldFormatHash := hash userGivenPassword in the old way
  if oldFormatHash == passwordHash
     login ok
     update password in database with new hash format
  else
     login ko
else
  use default 

Я думал о расширении текущего кодера безопасности, но метод isPasswordValid не имеет идентификатора учетной записипроверить (или его каноническое имя), чтобы часть обновления не была доступна.

1 Ответ

1 голос
/ 28 марта 2012

В случае, если это может помочь кому-то, кто столкнулся с этой проблемой, вот решение, которое я использовал Старый способ хранения паролей в базе данных не использовал соли. Поэтому я обновил этот столбец, чтобы он содержал идентификатор пользователя.

Тогда было легко создать свой собственный кодер безопасности с помощью параметра salt для обновления хэшей паролей пользователя.

...