Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Est-il possible d’empêcher le visiteur d’accéder à une action via l'URL (sachant que cette action doit être accessible en interne pour le bon fonctionnement de l'application) ?
J'ai trouvé un topic à ce sujet sur le net mais je n'ai pas bien compris la solution proposée, ce serait génial si quelqu'un pourrait m'éclairer :
http://www.developpez.net/forums/d71493 … tion-lurl/
Hors ligne
Si l'accès est interdit aux visiteurs mais pas en 'interne' (je vois pas trop ce que tu veux dire pas la) il faut une authentification quelques part. Donc Zend_Auth + Zend_Acl.
Hors ligne
Attention aux xsrf
Si je connais l'url de l'action à laquelle je n'ai pas accès j'envoie un mail à kk'un qui a cet accès et je met l'url dans une des images. si ca marche pas je m'arrange pour qu'il passe sur une page web où j'ai placé cette fausse image.
Hors ligne
En gros je t'explique :
1. J'ai une action login dans mon contrôleur index
2. Dans la vue login.phtml de cette action j'ai un formulaire de login
3. J'insère cette vue dans mon layout de la manière suivante :
<?php echo $this->action('login' , 'index'); ?>
Ce que je veux à présent, c'est que l'utilisateur ne puisse pas accéder à l'action login depuis l'url (en tapant index/login) !!!
Il n'a pas besoin de "s'authentifier" pour cela, un simple visiteur pourrait taper index/login dans l'url ce qui provoquerait des problèmes dans mon application !!!
En gros je voudrais interdire l'accès à cette action depuis l'url (à tout le monde) et que cette action ne soit accessible qu'en interne (notamment par le layout)
Hors ligne
Dans ce cas, peut-être qu'utiliser une action n'est pas la solution. As-tu regardé à faire autrement ? (ex: aide de vue).
Hors ligne
Salut, tu peux éventuellement bidouiller quelque chose, c'est pas très propre mais bon.
Dans ta méthode loginAction tu peux faire les tests suivant :
- si l'utilisateur est connecté tu le rediriges sois sur la page précédente soit sur la page d'accueil
- si la page est accédé en méthode GET tu rediriges vers la page que tu veux (comme ça y aller manuellement ne fera rien)
- si la page est accédé en méthode POST (donc soumission de formulaire) tu fais une authentification classique, si celle-ci est OK alors tu es en fonctionnement normale et tu fais le traitement qui doit être fait après l'authentification de l'utilisateur. Dans le cas contraire tu rediriges vers la page que tu veux.
En traitant ces 3 cas là il sera donc impossible pour un utilisateur d'accéder à la page. Après si le soucis vient du faire que le contrôleur demande une page index/login.phtml rien ne t'empêche d'en créer une vide qui servira juste pour pas de bug. De plus sur cette page (à tester) tu peux éventuellement rajouter un header de redirection vers ta page d'accueil.
Hors ligne
Merci Orkin
J'ai bidouillé comme tu as dis et sa fonctionne !
Hors ligne