Я использую Symfony2 для своего проекта, и я создал две страницы. Одна страница входа и одна индексная страница. Я успешно зарегистрировал учетную запись администратора (с ROLE_ADMIN
).
Однако я получил 403 Forbidden страницу со следующей ошибкой:Symfony2 - Access Denied
ERROR - Uncaught PHP Exception
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "Access Denied" at .\vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\ExceptionListener.php line 100
И это мой конфиг в security.yml
:
access_control:
- { path: ^/vs/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/vs/index, roles: ROLE_ADMIN }
когда я var_dump пользователя. Я вижу, что роли пусто:
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)
Что я сделал не так?
http://symfony.com/doc/current/cookbook/security/entity_provider.html#managing-roles-in-the-database – lackovic10
Да, после этого учебника. – rukabillaan
Какой маршрут используется для перенаправления после входа? Это '/ vs/index'? Кстати, вы должны использовать '\ Doctrine \ Common \ Util \ Debug :: dump ($ entity)' вместо 'var_dump ($ entity)', когда имеете дело с объектами Doctrine. –