4

プロジェクトに Symfony2 を使用しており、2 つのページを作成しました。1 つのログイン ページと 1 つのインデックス ページ。ROLE_ADMIN管理者アカウント (で) に正常にログインしました。
ただし、次のエラーを含む 403 Forbidden ページを受け取りました。

エラー - キャッチされていない PHP 例外
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "Access Denied" at .\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)

私は何を間違えましたか?

4

1 に答える 1

1

教義関係の注釈が間違っていました:

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

/**
 * @ORM\ManyToMany(targetEntity="User", mappedBy="roles") 
 */ 
private $users; 
于 2013-09-11T21:12:46.607 に答える