Come posso ottenere loginRedirect da più posizioni di accesso in CakePHP?

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

  •  04-07-2019
  •  | 
  •  

Domanda

Sto provando a fare in modo che l'autenticazione funzioni a mio piacimento in un'app CakePHP e mi sto imbattendo.

Voglio consentire all'utente l'accesso dalla home page o da una pagina di accesso dedicata. Sto usando il componente Auth per gestire il login e in questo momento il login stesso funziona. Sto inviando il modulo nella home page a / Users / Login e li accede e crea la sessione. Il problema è che reindirizza l'utente alla home page. Preferirei reindirizzare alla posizione specificata in loginRedirect.

Se accedo direttamente da / users / login, inoltra a loginRedirect. Penso che il problema abbia a che fare con l'invio del modulo da una pagina a un'altra pagina anziché a se stesso, auth pensa automaticamente che tu voglia tornare alla pagina precedente.

Qualche idea?

È stato utile?

Soluzione

in AppController

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

in UsersController

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

Inoltre, se non l'hai già fatto, dovresti spostare il modulo in un elemento, in modo da poter essere assolutamente sicuro che il modulo di accesso sia identico tra le 2 viste di accesso.

Altri suggerimenti

Sì, auth ha una funzione in cui ti reindirizzerà alla pagina a cui hai tentato di accedere prima di accedere. Se l'impostazione del reindirizzamento della registrazione non ha funzionato, puoi provare a impostare loginRedirect su false e fare un manuale ($ this- > redirect ([..]) nell'azione UsersController :: login.

puoi disattivare $ autoRedirect impostandolo su false e gestendo il reindirizzamento da solo. Il problema con AuthComponent è che c'è troppa automagica che non puoi davvero controllare, o solo dagli hack.

Una soluzione per il tuo problema è l'eliminazione della chiave Session.Auth.redirect, quindi AuthComponent utilizzerà sempre l'URL $ loginRedirect:

$this->Session->del('Auth.redirect');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top