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
Vous devez vous connecter pour publier un commentaire.
Ajouter un parent::beforeFilter(); beforeFilter de l'utilisateur contrôleur:
Vous pouvez également remplacer la redirection avec cette à la méthode de login de l'utilisateur de votre contrôleur:
Auth->redirect() retourne l'url vers laquelle l'utilisateur a atterri avant d'être emmené à la page de connexion ou Auth->loginRedirect.
OriginalL'auteur GJ.
Mettre ce code à votre contrôleur:
et ce pour la page de connexion:
OriginalL'auteur Aditya P Bhatt