CakePHP composant Auth redirection question

J'ai de la difficulté à obtenir le composant Auth faire les redirections que je veux dans un CakePHP 1.2.6 app.

J'ai un formulaire de connexion qui s'affiche sur toutes les pages et je veux garder l'utilisateur sur la page, il se connecte sur. Par exemple, si il est affichage de profil d'un autre utilisateur, je veux le garder il y a après la connexion, pas de redirection lui à la $this->Auth->loginRedirect action. Aussi, une autre chose à propos de mon application, c'est que je n'ai pas de "l'accès authentifié uniquement" des pages, chaque page est accessible à tout le monde, mais si vous êtes connecté, vous bénéficiez de fonctionnalités supplémentaires.

Ce que j'ai compris à la lecture de la la documentation est que j'ai besoin de autoRedirect de faux pour obtenir le code dans la fonction login() à exécuter:

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());
    }

    /* [...] */
}

Actuellement, cela me brise d'authentification. J'ai remarqué (dans les journaux) que si je laisse la redirection dans la fonction de connexion et définissez autoRedirect à false, le champ mot de passe dans $this->data dans le login() fonction apparaît comme vide.

Ci-dessous, j'ai affiché le contenu de AppController qui se rapportent au composant 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('*');
      }
}

Je n'arrive pas à comprendre ce que je fais mal.

OriginalL'auteur Alex Ciminian | 2010-04-14