Problema de redirecionamento do componente de autenticação do CakePHP
Estou tendo problemas para obter o componente Auth para fazer os redirecionamentos que desejo em um aplicativo CakePHP 1.2.6.
Eu tenho um formulário de login que aparece em todas as páginas e desejo manter o usuário na página em que ele faz logon. Por exemplo, se ele estiver visualizando o perfil de outro usuário, desejo mantê-lo lá após o login, não redirecioná-lo para o diretório$this->Auth->loginRedirect
açao. Além disso, outra coisa sobre o meu aplicativo é que eu não tenho páginas "somente acesso autenticado", todas as páginas são acessíveis a todos, mas se você estiver conectado, obterá recursos adicionais.
O que eu entendi ao ler odocumentação é que eu preciso definirautoRedirect
para false para obter o código na função login () a ser executada:
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Form','Text');
function beforeFilter() {
$this->Auth->autoRedirect = false;
}
function login() {
$this->redirect($this->referer());
}
function logout() {
$this->redirect($this->Auth->logout());
}
/* [...] */
}
No momento, isso interrompe minha autenticação. Notei (a partir dos logs) que se eu deixar o redirecionamento na função de login e definirautoRedirect
para false, o campo da senha em$this->data
nologin()
A função aparece vazia.
Abaixo, publiquei o conteúdo do AppController relacionado ao componente Auth:
public function beforeFilter() {
$this->Auth->fields = array(
'username' => 'email',
'password' => 'password'
);
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'usercars', 'action' => 'homepage');
$this->allowAccess();
// build wishlist if the user is logged in
if ($currentUser = $this->Auth->user()) {
$wishlists = $this->buildWishlist($currentUser);
$this->set('wishlists', $wishlists);
}
}
private function allowAccess() {
if(in_array($this->name, /* all my controller names */)) {
$this->Auth->allow('*');
}
}
Parece que não consigo entender o que estou fazendo de errado.