J'ai rapidement et sans trop de considérations mis en place le système suivant :

un plugin agissant en routeShutDown vérifie avec hasIdentity() si l'utilisateur est authentifié. Si ce n'est pas le cas, on modifie la requête pour exécuter le couple controller/action correspondant au login (directement avec $request->setControllerName() ...).

Le controller/action chargé du login affiche un formulaire pour la saisie du nom d'utilisateur et du mot de passe et si le formulaire a été posté vérifie en base la validité des identifiants.

Le tout semble fonctionner correctement jusque là. Que pensez-vous notamment de l'utilisation du plugin en routeShutDown ?

Je souhaite maintenant améliorer mon processus afin qu'il réponde (si possible) à la problématique suivante et assez fréquente: je suis sur la page qui permet de modifier un article et quand je clique sur le bouton submit je suis redirigé vers le formulaire d'authentification, ma session ayant été détruite par le serveur. Je doit alors en général retourner sur la page et de plus ressaisir mes modifications.

Voilà comment je tente de résoudre ce problème : dans mon plugin chargé de modifier la requête au profit du contrôleur d'authentification je sauvegarde (avant modification) l'objet de requête dans le registre. Le contrôleur d'authentification va retrouver cette requête dans le registre, la sérialise et met le tout dans un champ caché du formulaire. l'utilisateur clique sur le submit, il est authentifié et on peut récupérer la requête initiale en déserialisant le fameux champ caché. J'aimerai alors modifier la requête en la remplaçant carrément par celle que j'ai obtenue par déserialisation et la marquer comme non dispatchée. Or je ne vois pas vraiment comment faire.

Des idées ? (ou commentaires bien entendu)