Come posso ottenere loginRedirect da più posizioni di accesso in CakePHP?
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?
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');