我正在为我的项目使用Symfony2,我创建了两个页面。一个登录页面和一个索引页面。我已成功登录管理员帐户(ROLE_ADMIN
)
但是我收到了403 Forbidden页面,其中包含以下错误:
错误 - 未捕获的PHP异常
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用户时。我发现角色是空的:
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)
我做错了什么?
答案 0 :(得分:1)
学说关系注释是错误的:
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
*/
private $roles;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
*/
private $users;