#php #symfony
#php #symfony
Вопрос:
У меня есть пользовательский пользовательский провайдер, в котором я извлекаю пароль из базы данных. Этот пароль основан на text username
.
В процессе Symfony login_check
я бы хотел, чтобы поле пароля равнялось тексту ввода в этом password field
текст ввода в username field
, а не только на основе текста ввода в поле пароля.
Есть ли способ сделать это ?
Короче говоря, я хотел бы заставить symfony проверять, равен ли пароль, определенный в User Provider, _password
полю _username
field
Ответ №1:
Для этого вам также потребуется настроить пользовательский поставщик аутентификации. Вы можете просмотреть документ здесь, чтобы сделать это:
http://symfony.com/doc/current/security/custom_authentication_provider.html
В основном клонируйте пароль по умолчанию и добавьте свои изменения в средство проверки паролей.
Вы также можете выполнить это, выполнив действия, указанные в документах пользовательского поставщика:
Если пароли ваших внешних пользователей изменены другим методом, то вам нужно будет проделать немного больше работы, чтобы Symfony правильно закодировал пароль. Это выходит за рамки этой записи, но будет включать подклассирование MessageDigestPasswordEncoder и переопределение метода mergePasswordAndSalt.
http://symfony.com/doc/current/security/custom_provider.html
Похоже, что вы можете использовать поле username в качестве своего рода соли, так что это может быть проще выполнить, чем написать полную пользовательскую аутентификацию