即使用户有角色,Symfony Expression Has_role也会出现问题

时间:2015-05-31 12:43:30

标签: symfony roles

在我的用户中有ADMIN和AUTEUR角色,当我尝试访问需要这些角色的页面时,我有这样的错误:

表达式“has_role('ROLE_AUTEUR')”拒绝访问。 403禁止

用户在bd中的“角色”字段:

a:2:{i:0;s:10:"ROLE_ADMIN";i:1;s:11:"ROLE_AUTEUR";}

security.yml

role_hierarchy:

    # app/config/security.yml
    ROLE_ADMIN:       [ROLE_AUTEUR, ROLE_MODERATEUR]       # Un admin hérite des droits d'auteur et de modérateur
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] # On garde ce rôle superadmin, il nous resservira par la suite

控制器:

    /**
 * @Security("has_role('ROLE_AUTEUR')")
 */
public function addAction(Request $request) {

    /* METHODE SECURITY avec SECURITY.CONTEXT
     * 

    // On vérifie que l'utilisateur dispose bien du rôle ROLE_AUTEUR
    if (!$this->get('security.context')->isGranted('ROLE_AUTEUR')) {
        // Sinon on déclenche une exception « Accès interdit »
        throw new AccessDeniedException('Accès limité aux auteurs.');
    }
    */

    $advert = new Advert ();

    // VERSION LONGUE
    // $form = $this->get('form.factory')->create(new AdvertType(), $advert);
    $form = $this->createForm ( new AdvertType (), $advert );

    if ($form->handleRequest ( $request )->isValid ()) {

        $em = $this->getDoctrine ()->getManager ();
        $em->persist ( $advert );
        $em->flush ();

        $request->getSession ()->getFlashBag ()->add ( 'notice', 'Annonce bien enregistrée.' );

        return $this->redirect ( $this->generateUrl ( 'oc_platform_view', array (
                'id' => $advert->getId () 
        ) ) );
    }

    return $this->render ( 'OCPlatformBundle:Advert:add.html.twig', array (
            'form' => $form->createView () 
    ) );
}

有什么想法吗?

0 个答案:

没有答案