Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-10-2009 17:28:37

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Gestion des erreurs en conflit avec mes Acls

Bonjour à tous,

Je suis de nouveau confronté à un problème su mon projet. Je viens d’implémenter les droits d’accès sans problème, si ce n’est que si une page est introuvable (mauvais contrôleur ou mauvaise action), je suis redirigé vers ma page de login, et non vers ma page 404.

Ayant parcouru diverses discussions à ce sujet, j’ai bien vérifié que la remontée des exceptions était désactivée [$frontController->throwExceptions(false);].
Bien que le plugin ErrorHandler soit chargé par défaut, je l’ai tout de même enregistré avant mon plugin Acl, mais rien n’y fait.

J’ai également vérifié que tout le monde ai accès à mon contrôleur d’action, mais le problème ne vient pas de là !

Dans mon plugin Acl, quand la ressource n’est pas dans les Acl je lui attribut la valeur null. La seule solution que j’ai alors trouvé est d’autoriser tout le monde à accéder à la ressource null, mais ce n’est pas une technique idéale !

Est-ce que j’aurais loupé une étape quelque part ? Merci d’avance si vous avez une solution à me proposer et bonne soirée !

Florent


Florent - Développeur Web

Hors ligne

 

#2 06-10-2009 10:26:14

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Gestion des erreurs en conflit avec mes Acls

Dans mon plugin ACL, je teste si la page demandée existe ou non avant de tester les droits.

Si elle n'existe pas, je renvoie sur la 404 (en changeant l'action, le contrôleur et le module).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 06-10-2009 23:47:10

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: Gestion des erreurs en conflit avec mes Acls

Bonsoir Philippe,

J'ai parcouru d'autres discussions sur le forum et sur d'autres sites à ce sujet et je suis tombé sur ce sujet qui vérifie si la requête peut aboutir ou non (isDispatchable), mais je me demandais si cette solution n'était pas trop lourde en terme de performance ? Qu'en penses-tu ?

J'ai également trouvé une autre solution à mon problème. Dans mon cas je testais juste si l'accès était autorisé et j'effectuais une redirection le cas échéant.

Code:

if (!$this->_acl->isAllowed($role, $ressource, $action)) {
    if (!$this->_auth->hasIdentity()) {
        $request->setModuleName('default');
        $request->setControllerName('auth');
        $request->setActionName('index');
    } else {
        $request->setModuleName('default');
        $request->setControllerName('error');
        $request->setActionName('privileges');
    }
}

Après ma condition d'Acl j'ai ajouté le code suivant :

Code:

$request->setModuleName($module);
$request->setControllerName($controller);
$request->setActionName($action);

Du coup, si ma ressource vaut null, je continue le traitement et la requête suit son cours normal jusqu'à lever une exception pour contrôleur introuvable.

Penses-tu qu'il est préférable d'implémenter la gestion complète avec la méthode isDispatchable, ... ?

D'avance un grand merci,
Bonne soirée.

Florent


Florent - Développeur Web

Hors ligne

 

#4 07-10-2009 11:03:08

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Gestion des erreurs en conflit avec mes Acls

Bonjour,

Je trouve ça intéressant ce isDispatchable. A mon avis ça vaut le coup de creuser, mais je te dis ça très abstraitement, je n'avais pas pensé à faire comme ça...

Pour les perfs il faudrait tester, mais il est possible que ça soit assez transparent. Peut-être que le dispatch n'est pas réellement lancé une 2e fois... A regarder dans le code ou à tester en charge. Désolé, je n'ai pas le temps de creuser tout de suite.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 08-10-2009 10:44:40

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Gestion des erreurs en conflit avec mes Acls

isDispatchable test si il est possible de chargé la class du controller, il ne test pas la fonction "action"
(voir le code dans Zend/Controller/Dispatcher/Standard.php)


----
Gruiiik !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages