Como faço para obter o loginRedirect de vários locais de login em CakePHP?

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

  •  04-07-2019
  •  | 
  •  

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?

Foi útil?

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');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top