2015-03-10 2 views
0

Я всегда 403 отказано в доступе, это мой security.ymlВсегда 403 отказывал Вход в помещении в Symfony 2, несмотря на мой пользователь имеет роли в базе данных

security: 
    role_hierarchy: 
     Livreur:  Livreur 
     Producteur: Producteur 
     Admin:   Admin 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_provider: form.csrf_provider 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, role: Admin } 

я хочу, чтобы доступ {URL}/app_dev. php/admin, всегда 403!

Я использую базу данных MongoDB, и это мой документ в Монго:

db.User.find().pretty() 
{ 
     "_id" : ObjectId("54fef590a98a93842000002e"), 
     "username" : "admin", 
     "usernameCanonical" : "admin", 
     "email" : "[email protected]", 
     "emailCanonical" : "[email protected]", 
     "enabled" : true, 
     "salt" : "flxrknwannwow0swccwk000gw44kwgg", 
     "password" : "u8d6fIrwTGF/x2FYhJxootw8MU4PR3KvY5mUjwLn9ZPBxA1foi0ox/OVif 
9HIipz/cTIdvghJNKsdXljCR6MVA==", 
     "locked" : false, 
     "expired" : false, 
     "roles" : { 
       "0" : "Admin" 
     }, 
     "firstName" : "xxxx", 
     "lastName" : "xxx", 
     "numTel" : "xxxx", 
     "adresse" : "xxxxx", 
     "lastLogin" : ISODate("2015-03-10T14:22:38Z") 
} 

the return of $document->getRoles() is 
["ADMIN","ROLE_USER"] 

и если если я сделать тест для текущего пользователя я получаю:

$this->container->get('security.context')->isGranted('Admin') 
or 
$this->container->get('security.context')->isGranted('ADMIN') 

он всегда возвращается FALSE

Помогите пожалуйста

+0

Я нахожу решение Любая роль должна иметь этот префикс «ROLE», поэтому я добавляю ROLE _ ** к моим 3 ролям –

ответ

1

Я думаю, что все имена ролей должны начинаться с ROLE_ - prefix Вам нужно использовать ROLE_ADMIN. У меня была аналогичная проблема, но когда я изменил название роли - проблема была решена.

+0

ДА В этом проблема Я исправлю это, спасибо –