Salut à tous,
j'ai un petit problème, j'ai voulu installer le composant Auth, premie pas vers les Acl mais je me suis heurté à un problème très embêtant, dès que je me rends sur une URL de mon site, firefox (ou autres d'ailleurs) m'indiquent que je suis mal redirigé !!!
Si quelqu'un pouvait m'aider, ça fait 2 jours que mon projet n'avance plus à cause de ça...
Le code du AppController
class AppController extends Controller {
var $helpers = array('Html', 'Form', 'Javascript', 'Session');
var $components = array('Auth', 'RequestHandler', 'Session');
function beforeFilter()
{
$this->Auth->userModel = 'Author';
$this->Auth->fields = array('username' => 'pseudo', 'password' => 'password');
$this->Auth->loginAction = '/authors/login';
$this->Auth->loginRedirect = '/posts/edit';
$this->Auth->loginError = "Identifiant ou mot de passe incorrects.";
$this->Auth->logoutRedirect = '/';
$this->Auth->authError = "Vous n'avez pas accès à cette page.";
}
}
Le code de AuthorsController
class AuthorsController extends AppController
{
function login() {}
function logout() {}
}
A noter que la table author est composée d'un champs password et d'un champs pseudo ainsi que d'autres champs d'information sur les membres du site !!!
Meri d'avance !!!
EUREKA,
j'ai trouvé, en réalité le problème venait d'une requète sur mon layout par défaut qui appelait une action qui, par défaut était interdite et donc ceci créait une redirection en boucle...
Donc lorsque vous utilisez Auth, il faut que si vous avez appelé des actions depuis votre layout par défaut, vous autorisiez ces actions dans le controlleur...
Erreur conne --"
dans ton AuthorsController, ajoutes cette fonction :
function beforeFilter()
{
$this->Auth->allow('login');
}
les urls qui te disent que tu es mal redirigé, c'est les quelles ? authors/login en fait partie ? parce que ca ca veut dire que tu as une redirection infinie (tu es sur /controller/action qui redirige sur /controller/action donc tu vas sur /controller/action qui redirige vers /controller/action....) faut trouver pourquoi et ou ca fait ca :)
Il est bien la le problème, quand j'ouver la première fois mon site depuis wamp, je suis redirigé vers /authors/login mais si je vais sur une autre page et que je reviens encore sur la page acceuil, j'ai le même problème sans être redirigé... Bref j'ai ce problème partout et c'est troublant...
donc en gros, tu vas sur ton site avec wamp (page d'accueil) et tu es redirigé, là tout va bien, tu retournes sur la pages d'accueil et là ca marche plus (désolé, j'ai un peu de mal a cerner donc j'essaye de mettres mes mots en etant le plus explicite pour pouvoir se comprendre ;))
c'est un peu étrange quand meme...
essayes de mettre les loginAction, logoutRedirect et loginRedirect sous forme de array('controller' => 'authors', 'action' => 'login'); comme ca deja tu n'auras pas de problème de réécritures d'url si ca se trouve, c'est que ca...
sinon, je vois pas bien ce qui pourrait clocher...
le fait d'ecrire tes fonctions sur une seule ligne, ca derange pas apache ? parce que moi il rale quand je fais comme ca ^^
Il me met l'erreur de redirection tout le temps et ne me redirige pas sur authors/login...
J'ai remis mes fonctions sur plusieurs pour voir ça n'a pas l'air de venir de la...
Le appController à la dernière maj :)
var $helpers = array('Html', 'Form', 'Javascript', 'Session');
var $components = array('Auth', 'RequestHandler', 'Session');
function beforeFilter()
{
$this->Auth->userModel = 'Author';
$this->Auth->fields = array('username' => 'pseudo', 'password' => 'password');
$this->Auth->loginAction = array('controller' => 'authors', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'index');
$this->Auth->loginError = "Identifiant ou mot de passe incorrects.";
$this->Auth->authError = "Vous n'avez pas accès à cette page.";
}
et dans authors_controller
class AuthorsController extends AppController
{
function login()
{
}
function logout()
{
}
function beforeFilter()
{
$this->Auth->allow('login');
}
}
Effectivement je ne vois pas d'où ça pourrait venir...
A noter que lorsque je mets
$this->Auth->allow('*'); dans AppController tout est autorisé mais si je mets $this->Auth->allow('login'); ça ne fonctionne pas...
là je vois pas du tout... ca m'arrive ce genre d'erreur de redirection infinie mais je trouves toujours pourquoi... ca m'est egalement arrivé avec le composant auth mais pareil, je trouvais la solution et là je vois pas du tout... je laisse la main si d'autres ont la solution...