Comment obtenir le loginRedirect à partir de plusieurs emplacements de connexion dans CakePHP?

StackOverflow https://stackoverflow.com/questions/238358

  •  04-07-2019
  •  | 
  •  

Question

J'essaie de faire en sorte que l'authentification fonctionne à mon goût dans une application CakePHP et me heurte à un problème.

Je souhaite laisser l'utilisateur se connecter à partir de la page d'accueil ou d'une page de connexion dédiée. J'utilise le composant Auth pour gérer la connexion et, à présent, la connexion elle-même fonctionne. Je soumets le formulaire sur la page d'accueil à / Utilisateurs / Connexion et il les connecte et crée une session. Le problème est qu'il redirige ensuite l'utilisateur vers la page d'accueil. Je préférerais qu'ils redirigent vers l'emplacement spécifié dans loginRedirect.

Si je me connecte directement à / users / login, il sera transféré à loginRedirect. Je pense que le problème a quelque chose à voir avec poster le formulaire d'une page sur une autre page plutôt que sur lui-même, auth pense automatiquement que vous voulez revenir à la page précédente.

Avez-vous des idées?

Était-ce utile?

La solution

dans AppController

public function beforeFilter( )
{
    $this->Auth->autoRedirect   =   false;
}

dans UsersController

public function login( )
{
    if( $this->Auth->user( ) )
    {
        $this->redirect( array(
            'controller'    =>  'users' ,
            'action'    =>  'index' ,
        ));
    }
}

Si vous ne l'avez pas déjà fait, vous devez déplacer le formulaire dans un élément afin de vous assurer que le formulaire de connexion est identique entre les 2 vues de connexion.

Autres conseils

Oui, auth a une fonctionnalité qui vous redirigera vers la page à laquelle vous avez essayé d’accéder avant de vous connecter. Si la définition de la redirection de connexion ne fonctionnait pas, vous pouvez essayer de définir le loginRedirect sur false et faire un manuel ($ this- > redirect ([..]) dans l'action UsersController :: login.

vous pouvez désactiver $ autoRedirect en le définissant sur false et en gérant vous-même la redirection. Le problème avec AuthComponent est qu’il ya trop d’automagique que vous ne pouvez pas contrôler, ou seulement par des hacks.

Une solution à votre problème consiste à supprimer la clé Session.Auth.redirect. Par conséquent, AuthComponent utilisera toujours l'URL $ loginRedirect:

$this->Session->del('Auth.redirect');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top