Symfony2 — доступ запрещен

Я использую Symfony2 для своего проекта и создал две страницы. Одна страница входа и одна индексная страница. Я успешно вошел в учетную запись администратора (с ROLE_ADMIN).
Однако я получил страницу 403 Forbidden со следующей ошибкой:

ОШИБКА - Uncaught PHP Exception
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: «Отказано в доступе» в .\vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\ExceptionListener.php, строка 100

А это мой конфиг в security.yml:

access_control: 
   - { path: ^/vs/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
   - { path: ^/vs/index, roles: ROLE_ADMIN }

когда я var_dump пользователя. Я вижу, что roles пусто:

private 'roles' => 
    object(Doctrine\ORM\PersistentCollection)[293]
      private 'snapshot' => 
        array (size=0)
          empty

А это Роли от моего User.php:

/**
 * @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
 * @ORM\JoinTable(name="user_role",
 * joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 * inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
 * )
 */
private $roles;

И вот что я получаю при использовании $user->getRoles():

array (size=1)
  0 => 
    object(...\Entity\Role)[397]
      private 'id' => int 1
      private 'name' => string 'admin' (length=5)
      private 'role' => string 'ROLE_ADMIN' (length=10)
      private 'users' => 
        object(Doctrine\ORM\PersistentCollection)[398]
          private 'snapshot' => 
            array (size=0)

Что я сделал не так?


person rukabillaan    schedule 11.09.2013    source источник
comment
comment
Да, я следовал этому уроку.   -  person rukabillaan    schedule 11.09.2013
comment
Какой маршрут используется для перенаправления после входа в систему? Это /vs/index? Кстати, вы должны использовать \Doctrine\Common\Util\Debug::dump($entity) вместо var_dump($entity), когда имеете дело с сущностями Doctrine.   -  person Laurent W.    schedule 11.09.2013
comment
работает для меня, только что попробовал. возможно, вы можете опубликовать всех пользователей и ролевых сущностей. Может быть, это какая-то глупость, например, опечатка или что-то в этом роде. И не забудьте добавить роль для пользователя в БД :)   -  person lackovic10    schedule 11.09.2013
comment
вот мои аннотации: /** * @ORM\ManyToMany(targetEntity=Role, inversedBy=users) * / private $roles; /* * @ORM\ManyToMany(targetEntity=User, mappedBy=roles) */ private $users; попробуй сначала их поменять   -  person lackovic10    schedule 11.09.2013
comment
@LaurentWartel Я получил пустой массив ролей, когда dump($user) public 'roles' => array (size=1) 0 => string '\TestBundle\Entity\Role'   -  person rukabillaan    schedule 11.09.2013
comment
@lakovic10 Я использовал ваши аннотации, а затем очистил кеш + обновил БД ... теперь все работает!!!!! большое спасибо.   -  person rukabillaan    schedule 11.09.2013
comment
@ lackovic10, не могли бы вы сформулировать комментарий как ответ, чтобы Рукабиллаан мог принять его, чтобы закрыть вопрос и правильный парень получил признание за свои усилия? :)   -  person Nicolai Fröhlich    schedule 11.09.2013


Ответы (1)


Аннотации отношения доктрины были неправильными:

/** 
 * @ORM\ManyToMany(targetEntity="Role", inversedBy="users") 
 */ 
private $roles; 

/**
 * @ORM\ManyToMany(targetEntity="User", mappedBy="roles") 
 */ 
private $users; 
person lackovic10    schedule 11.09.2013