Ошибка «Поставщик должен вернуть объект UserInterface» с помощью входа в Symfony2

Вопрос: Я пытаюсь изменить существующий демо-логин, который поставляется с symfony, от in_memory до db-хранилища пользователей. Я все еще получаю: [2013-03-27 19:24:34] security.INFO: Authentication request failed: The user provider must return a UserInterface object. [] [] Поэтому я изменил: security.yml providers: user_db: entity: { class: CremeskAgentisBundleEntityPouzivatel, property: meno } Также создано упомянутое Сущность: 'use DoctrineORMMapping as

Вопрос:

Я пытаюсь изменить существующий демо-логин, который поставляется с symfony, от in_memory до db-хранилища пользователей. Я все еще получаю:

[2013-03-27 19:24:34] security.INFO: Authentication request failed: The user provider must return a UserInterface object. [] []

Поэтому я изменил:

security.yml

providers: user_db: entity: { class: CremeskAgentisBundleEntityPouzivatel, property: meno }

Также создано упомянутое Сущность:

‘use DoctrineORMMapping as ORM; use SymfonyComponentSecurityCoreUserUserInterface; /** * Pouzivatel * * @ORMTable(‘pouzivatel’) * @ORMEntity */ class Pouzivatel implements UserInterface .etc

и левый контроллер, как это было:

use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentSecurityCoreSecurityContext; use SensioBundleFrameworkExtraBundleConfigurationRoute; use SensioBundleFrameworkExtraBundleConfigurationTemplate; use JMSSecurityExtraBundleAnnotationSecure; /** * @Route(«/demo/secured») */ class SecuredController extends Controller { /** * @Route(«/login», name=»_demo_login») * @Template() */ public function loginAction() { if ($this->get(‘request’)->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { $error = $this->get(‘request’)->attributes->get(SecurityContext::AUTHENTICATION_ERROR); } else { $error = $this->get(‘request’)->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); } return array( ‘last_username’ => $this->get(‘request’)->getSession()->get(SecurityContext::LAST_USERNAME), ‘error’ => $error, ); } /** * @Route(«/login_check», name=»_security_check») */ public function securityCheckAction() { // The security layer will intercept this request } /** * @Route(«/logout», name=»_demo_logout») */ public function logoutAction() { // The security layer will intercept this request } /** * @Route(«/hello», defaults={«name»=»World»}), * @Route(«/hello/{name}», name=»_demo_secured_hello») * @Template() */ public function helloAction($name) { return array(‘name’ => $name); } /** * @Route(«/hello/admin/{name}», name=»_demo_secured_hello_admin») * @Secure(roles=»ROLE_ADMIN») * @Template() */ public function helloadminAction($name) { return array(‘name’ => $name); } }

Я не могу заставить войти работать. Поблагодарите любую помощь. Спасибо.

Лучший ответ:

Проверьте пространство имен вашего пользовательского объекта и соответствие конфигурации безопасности.

namespace CremeskAgentisBundleEntity; use …. class Pouzivatel implements UserInterface { ….

и в вашем security.yml

providers: user_db: entity: { class: CremeskAgentisBundleEntityPouzivatel, property: meno }

Оцените статью
Добавить комментарий