Symfony2 - 访问被拒绝

时间:2013-09-11 12:38:03

标签: php symfony access-denied user-roles

我正在为我的项目使用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)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

学说关系注释是错误的:

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

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