Como faço para obter o loginRedirect de vários locais de login em CakePHP?
Pergunta
Eu estou tentando obter a autenticação de trabalho para o meu gosto em um aplicativo CakePHP e correr em um obstáculo.
Eu quero que o login do usuário a partir de qualquer página ou a partir de uma página de login dedicado. Estou usando o componente Auth para gerenciar login e agora o login si funciona. Estou enviando o formulário na página inicial para / users / login e ele não registrá-los e criar sessão. O problema é que, em seguida, redireciona o usuário de volta para a página inicial. Eu prefiro que redirecionar para o local especificado na loginRedirect.
Se eu entrar de / users / login diretamente o faz para a frente a loginRedirect. Acho que o problema tem algo a ver com a postagem do formulário de uma página para outra página, em vez de a si mesmo, auth pensa automaticamente que você quer voltar para a página anterior.
Qualquer pensamento?
Solução
no AppController
public function beforeFilter( )
{
$this->Auth->autoRedirect = false;
}
em UsersController
public function login( )
{
if( $this->Auth->user( ) )
{
$this->redirect( array(
'controller' => 'users' ,
'action' => 'index' ,
));
}
}
Além disso, se você não tiver já, você deve mover o formulário em um elemento, de modo que você pode fazer absolutamente certo de que o formulário de login é idêntico entre as visualizações 2 de login.
Outras dicas
Sim auth tem um recurso onde será redireccionado para a página que você tentou acessar antes de fazer login. Se definir o redirecionamento loging não funcionou, você pode tentar definir o loginRedirect como falso e fazer um manual ($ this- > redirect ([..]) na ação UsersController :: login.
Você pode desligar $ autoRedirect, definindo-o como falso e manusear o redirecionamento por si mesmo. O problema com o AuthComponent é que há muita automagic que você realmente não pode controlar, ou apenas por hacks.
Uma solução para o seu problema é excluir a chave Session.Auth.redirect, de modo que o AuthComponent sempre usará os US $ loginRedirect URL:
$this->Session->del('Auth.redirect');