2013-11-25 5 views
0

Здравствуйте Я после этого учебника: http://symfony.com/doc/current/cookbook/security/entity_provider.htmlSymfony2 Войти твердят Неверные учетные данные

Мой security.yml:

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     modules\UserBundle\Entity\User: 
      algorithm:  sha1 
      encode_as_base64: false 
      iterations:  1 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     chain_provider: 
      chain: 
       providers: [in_memory, user_db] 
     in_memory: 
      memory: 
       users: 
        test: { password: test } 
     user_db: 
      entity: { class: modulesUserBundle:User } 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     login: 
      pattern: ^/demo/secured/login$ 
      security: false 

     login_firewall: 
      pattern: ^/login$ 
      anonymous: ~ 

     secured_area: 
      pattern: ^/ 
      provider: user_db 
      http_basic: 
       realm: "Secured Demo Area" 
       provider: in_memory 
      form_login: ~ 

      logout: 
       path: _demo_logout 
       target: _demo 
      #anonymous: ~ 
      #http_basic: 
      # realm: "Secured Demo Area" 

     admin_area: 
      pattern: ^/admin 
      http_basic: ~ 

    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/users, roles: ROLE_SUPER_ADMIN } 
     - { path: ^/admin, roBad credentialsles: ROLE_ADMIN } 
     #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 

В базе данных у меня есть это:

пользователей:

(id, username, salt, password, email, is_active) 
(1,'admin','123456','7c4a8d09ca3762af61e59520943dc264','[email protected]',1) 
(2,'bruno','123456','7c4a8d09ca3762af61e59520943dc264','[email protected]',1) 

Роли:

(id, name, role) 
(1,'Admin','ROLE_ADMIN') 
(2,'User','ROLE_USER') 

USER_ROLE:

(user_id, role_id) 
(1,1) 
(2,2) 

Everytime я пытаюсь войти в систему с одним пользователем из БД я получил "Плохие полномочия". Но если я вхожу в систему с пользователем «test», определенным в in_memory, нет проблем

Я думаю, что ошибка в моем security.yml. Но что я делаю неправильно?

+1

вы проверили файл журнала? –

ответ

1

Как вы зарегистрировали это пользователя в БД? Я могу видеть пароли пользователей в виде обычного текста, поэтому я предполагаю, что в процессе входа в систему он будет использовать пароль с вашей конфигурацией и после прохождения пропущенного прохода pass! = Db pass, поэтому он не может войти в систему. Кодировать пароли DB и я уверен, что когда-либо будет нормально
Если вы загружаете приборы, используйте $ user-> setPlainPassword ('pass'), чтобы сохранить пароль пользователя, сравнить значение db с новым, посмотреть, насколько они отличаются
Я надеюсь, что это помогает вам

+0

Я использую соль и пароль с тем же SHA1, потому что я не уверен в соли. post edit – BrunoRamalho

0

неподвижную:
security.yml

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     modules\UserBundle\Entity\User: 
      algorithm:  sha1 
      encode_as_base64: false 
      iterations:  1 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     administrators: 
      entity: { class: modulesUserBundle:User } 

    firewalls: 
     login_firewall: 
      pattern: ^/login$ 
      anonymous: ~ 
     secured_area: 
      pattern: ^/ 
      provider: administrators 
      form_login: ~ 

    access_control: 
    - { path: ^/admin/, roles: ROLE_ADMIN } 
Смежные вопросы