Я пытаюсь сделать регистрацию пользователя для интерфейса Sulu CMF. Я хочу хэш-паролей. Но по любой причине я не могу получить Сервис.Доступ к службам безопасности в Sulu Frontend: Хеширование пароля пользователя
You have requested a non-existent service "security.encoder_factory".
Или
You have requested a non-existent service "security.password_encoder"
Если я попросить
app/console container:debug | grep encode
Обе услуги там
$ app/console container:debug | grep encode
263: security.encoder_factory Symfony\Component\Security\Core\Encoder\EncoderFactory
266: security.password_encoder Symfony\Component\Security\Core\Encoder\UserPasswordEncoder
У вас есть совет для меня? Мой контроллер осознает контейнер и мой код выглядит следующим образом:
$this->container->get('security.password_encoder')
Heres какой-то выход из conainer: отладки
$ app/console container:debug security.password_encoder
[container] Information for service security.password_encoder
Service Id security.password_encoder
Class Symfony\Component\Security\Core\Encoder\UserPasswordEncoder
Tags -
Scope container
Public yes
Synthetic no
Lazy no
Synchronized no
Abstract no
$ app/console container:debug security.encoder_factory
[container] Information for service security.encoder_factory
Service Id security.encoder_factory
Class Symfony\Component\Security\Core\Encoder\EncoderFactory
Tags -
Scope container
Public yes
Synthetic no
Lazy no
Synchronized no
Abstract no
Мои в настоящее время установлена версия Symfony является v2.6.12
команда, предоставленная sulu, использует этот метод. Он работает в обеих средах, dev и prod.
/**
* Encodes the given password, for the given password, with he given salt and returns the result.
*
* @param $user
* @param $password
* @param $salt
*
* @return mixed
*/
private function encodePassword($user, $password, $salt)
{
/** @var PasswordEncoderInterface $encoder */
$encoder = $this->getContainer()->get('security.encoder_factory')->getEncoder($user);
return $encoder->encodePassword($password, $salt);
}
Я звоню с контроллера. Там я расширяю Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller (который расширяет ContainerAware). – psren
Какую версию Symfony вы используете? И можете ли вы показать вывод 'php app/console container: debug security.password_encoder' и' php app/console container: debug security.encoder_factory'? – xabbuh
Спасибо за ваш ответ. Я добавил более подробно выше. – psren