Я пытаюсь настроить свое приложение symfony2 для использования кодировщика паролей sha512 с поставщиком безопасности in_memory, но я не могу заставить его работать. Я получаю печально известную ошибку «Неверные учетные данные» при входе в систему. В отличие от большинства вопросов здесь, я не хочу получать пользователей из какой-либо базы данных. Я не хочу использовать FOSUserBundle. Все, что я хочу, это просто заменить открытые пароли в моем файле security.yml хэшами sha512.
Согласно http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password это должно быть так же просто, как установить кодировщик и заменить пароль в виде открытого текста на хеш, вот что я пытался сделать:
безопасность.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: sha512
providers:
in_memory:
memory:
users:
admin: { password: $6$randomsalt$mbd3sS15ibE.W7hkLqfQ0LNEQsUod7BOUD67g/oIb8uhqGfyAzaga3vgGaRJZn67VdHHfn.tnkKY9ffDVXw3C., roles: [ 'ROLE_ADMIN' ] }
Пароль — «admin», соль — «randomsalt», а хэш сгенерирован mkpasswd:
mkpasswd -m sha-512 admin randomsalt
Почему это не работает? Ожидает ли symfony2, что хэш будет в каком-то другом формате?
РЕДАКТИРОВАТЬ: вещи, которые я пробовал:
- создание хэша через PHP с использованием
crypt($password, "$6$".$salt)
- переключение
encode_as_base64
true/false на кодировщике безопасности - указание количества итераций для использования (по умолчанию 5000)
Результат тот же: "Неправильные учетные данные".
mkpasswd
в этой ситуации? Кроме того, вам может понадобиться использоватьphp
и функциюsha512
для генерации хэша пароля, а не вызыватьmkpasswd
? - person tftd   schedule 24.05.2014crypt($password, "$6".$salt)
(комментарий отредактирован для краткости кода) - person Rob   schedule 24.05.2014