2008-11-12 18 views
5

J'utilise une configuration simple Zend_Auth pour authentifier les utilisateurs pour l'une de mes applications, en utilisant une vérification de la méthode preDispatch() dans un controller plugin. Lorsque les utilisateurs anonymes accèdent àComment rediriger vers l'URI demandé après l'authentification en utilisant Zend_Auth?

/users/view/id/6 

par exemple, ils doivent être redirigés vers l'URI ci-dessus après authentification.

Quelle est la meilleure façon de faire cela? Je préfère ne pas stocker $_SERVER['REQUEST_URI'] dans la session. Personnellement, je trouverais stocker l'ensemble de l'objet Zend Request à la solution la plus propre, mais je ne suis pas sûr que ce soit raisonnable et si c'est l'approche que je devrais prendre.

Des pensées?

Répondre

1

Bien rediriger ou transférer vers le LoginController n'est peut-être pas le moyen optimal d'amener un utilisateur non authentifié à la page de connexion. Au lieu de preDispatch, vous pouvez récupérer l'objet $ request et le modifier en procédant comme suit.

$request->setActionName('someaction'); 
$request->setControllerName('somecontroller'); 

À ce stade, votre demande initiale est maintenue mais la page affiche la page de connexion. Ensuite, vous pouvez modifier votre contrôleur de connexion pour vérifier si l'emplacement actuel de la demande est le contrôleur de connexion ou si c'est quelque chose d'autre. Si c'est quelque chose d'autre (la demande originale) sur une connexion réussie, envoyez-les à cette page.

1

Nous avons rencontré le même problème et avons effectivement stocké l'URI de la demande dans la variable de session. Si vous ne placez pas d'objet spécifique non sérialisable dans Zend Request, je pense que vous pouvez également le conserver.

Cependant, cela dépend du débit que vous attendez. La sérialisation d'objets comme Zend Request n'est peut-être pas la meilleure idée si vous avez un site web très fréquenté.