При чтении https://symfony.com/doc/current/security/custom_provider.html#create-a-user-class/ все примеры, которые я видел, реализуют Symfony\Component\Security\Core\User\UserInterface
для класса User
. Этот интерфейс определяет метод для солевого поля, но я хочу использовать Bcrypt для алгоритма хэширования.Symfony 3 пользовательский поставщик, использующий Bcrypt
В моем app/config/security.yml
файле у меня есть:
encoders:
AppBundle\Security\User\WebserviceUser:
algorithm: bcrypt
cost: 12
Связанный документ говорит:
Если getSalt() ничего не возвращает, то представленный пароль просто закодированы с использованием алгоритма указывается в безопасности .yml. Если задана соль, создается следующее значение, а затем хешируется ...
Означает ли это, что если я укажу для использования Bcrypt, то мне не нужно поле солей в базе данных пользователей table (поскольку соль находится в той же строке, что и остальная часть пароля при хэшировании с помощью Bcrypt)?
Если это так, то я предполагаю, что могу просто оставить метод getSalt()
пустым телом, чтобы не было указано ни одной соли, и алгоритм в security.yml будет использоваться.
Я полагаю, что мои предположения верны? Если это не так, как я могу реализовать пользовательский провайдер с использованием bcrypt для хеш-паролей?
Я использую Symfony 3.1.6
Это действительно помогло мне. Я создаю пользовательский UserProvider и определил свой собственный пользовательский класс, так как я использую базу данных, которую Doctrine не поддерживает. Оба, казалось, ожидали, что у меня соль отдельно от моего хешированного пароля. –