当前位置: 动力学知识库 > 问答 > 编程问答 >

symfony2 - Symfony Expression Has_role issue even though user has role

问题描述:

In my user has ADMIN and AUTEUR role, when I try to reach a page which need those roles, I have this error:

Expression "has_role('ROLE_AUTEUR')" denied access.

403 Forbidden

the user's "role" field in 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

the controller:

 /**

* @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 ()

) );

}

Any idea?

分享给朋友:
您可能感兴趣的文章:
随机阅读: