Salut tout le monde.

Je me heurte a un problème depuis ce matin.

Je souhaiterais mettre en place le système d'authentification dès que l'on tape l'url.

J'ai donc fait dans le fichier hook :

if(!$this->Session->isLogged()){
    $this->redirect('users/login');
}

Donc des que je tape: http://www.monurl.com/ cela est bien rediriger vers http://www.monurl.com/users/login mais j'ai une erreur du navigateur comme quoi cela n'existe pas. Il n'y a meme pas de message d'erreur rien, juste que le navigateur ne pointe sur rien..

Si quelqu'un a une idée je suis tout ouïe.

Merci

7 réponses


Grafikart
Réponse acceptée

Rajoute une condition du genre "Et si on n'est pas déja sur users/login"

Mikachu
Auteur
Réponse acceptée

Parfait:

if(!$this->Session->isLogged() && ($this->request->url != $_SERVER'PATH_INFO'])) {
    $this->redirect('users/login');
}

Ca fonctionne très bien Merci. Maintenant est-ce la bonne méthode, je sais pas mais ça fonctionne. Me reste plus qu'a bloquer les accès au menu. :)

Si tu retire ta ligne ça marche ?

Mikachu
Auteur

Oui tout fonctionne.

J'ai simplement ajouter ces lignes la a la suite du hook de base.

Comme cela:

<?php
// HOOK original:
if($this->request->prefix == 'admin'){
    $this->layout = 'admin'; 
    if(!$this->Session->isLogged() || $this->Session->user('role') != 'admin'){
        $this->redirect('users/login'); 
    }
}
// Redirection vers la page login a l'ouverture du site:
if(!$this->Session->isLogged()){
    $this->redirect('users/login');
}
?>

Mais ça ne fonctionne pas :( . Peut être je m'y prends super mal :)

Je mets en copie l'erreur du navigateur :

Cette page Web présente une boucle de redirection.
La page Web à l'adresse http://localhost/users/login a déclenché trop de redirections. Pour résoudre le problème, effacez les cookies de ce site ou autorisez les cookies tiers. Si le problème persiste, il peut être dû à une mauvaise configuration du serveur et n'être aucunement lié à votre ordinateur.
Voici quelques suggestions :
Actualisez cette page Web ultérieurement.
En savoir plus sur ce problème.
Erreur 310 (net::ERR_TOO_MANY_REDIRECTS) : Trop de redirections

Regarde ton code ça parait logique.
Si l'utilisateur n'est pas logué je le redirige vers users/login
l'utilisateur n'est pas logué donc je le redirige vers users/login
l'utilisateur n'est pas logué donc je le redirige vers users/login
l'utilisateur n'est pas logué donc je le redirige vers users/login
l'utilisateur n'est pas logué donc je le redirige vers users/login
l'utilisateur n'est pas logué donc je le redirige vers users/login

Tu vois ou ça cloche ? :d

Mikachu
Auteur

mdr, bah oui c est vrai, quel boulet. Il boucle à l'infini .....

Donc comment je peux faire pour que si on n'est pas logué on soit redirigé par défaut sur users/login ?

Et dans ce cas la: pourquoi dans la première partie du hook cela passe sans problème ? Je penses avoir loupé quelques chose la lol

mikachu, aurait tu une réponse plus claire a m'apporter je suis aussi dans la meme situation que toi.

Cette page Web présente une boucle de redirection.