Bonjour,
j'utilise cakephp 2.7, suis débutant
Voila je rencontre un petit problème avec mon code.
Lorsque ma connexion expire la redirection vers mon controlleur de connexion ComtresControlleur dans le appControlleur change et pointe vers le controlleur UsersControlleur. et je me retrouve avec une erreur de redirection que je ne comprens pas
Dans mon controlleur AppControlleur j'ai ceci qui fonctionne au début
class AppController extends Controller {
public $helpers = array('Session','Html','Form','Js','Paginator','Cache');
public $components = array(
'Session',
'Auth' =>array(
'authenticate' => array(
'Form' => array(
'userModel' => 'Compte',
'fields' => array(
'username' => 'pseudo', // 'username' par défaut
'password' => 'motdepasse'), // 'password' par défaut
'userFields' => array('pseudo','motdepasse','role'),
'passwordHasher' => array(
'className' => 'Simple',
'hashType' => 'sha256'
)
)
),
'redirect' => array('controller' => 'Comptes', 'action' => 'login'),
'loginAction' => array('controller' => 'Comptes', 'action' => 'login'),
'loginRedirect' => array('controller' => 'Personnels','action' => 'index'),
'logoutRedirect' => array('controller' => 'Comptes','action' => 'login'),
'authorize' => array('Controller')
)
);
public $uses = array('Requete','Interventionrequete');
public function beforeFilter()
{
parent::beforeFilter();
//$this->Auth->allow('membre_addclient','login');
if($this->Session->check('service'))
{
$number = $this->Requete->find('count',array(
'conditions' => array('etat' => 0,
'services_id' => $this->Session->read('service'))
)
);
$this->Session->write('notifrequete',$number);
}
elseif($this->Session->check('person'))
{
$number = $this->Interventionrequete->find('count',array(
'fields' => array('Requete.etat','Requete.type','Requete.description','details','Interventionrequete.id','Requete.id','Interventionrequete.created'),
'conditions' => array('Requete.etat !=' => 1,'Interventionrequete.clients_id' => $this->Session->read('person')),
'recursive' => 0
));
$this->Session->write('notifrequete',$number);
}
}
public function isAuthorized($user)
{
//parent::isAuthorized($user);
return true;
}
}
et dans mon fichier de route j'ai ceci:
Router::connect('/', array('controller' => 'Comptes', 'action' => 'login'));
qui est la seule route présente.
Je veux que lorsque ma session expire, que je sois redirigé vers la page de connexion comme configurer dans le AppControlleur
le controlleur UserControlleur est introuvable il faut créer ce controlleur
quelqu'un pardon a déjà eu ce type de problème? a l'aide s'il vous plait
Je ne vois aucune mention de UsersController dans ton code du coup du mal à voir ou le problème apparait. Quand tu parle de session qui expire, tu clique sur un bouton "se déconnecter" ?
Non lorsque je fait plus de 30 minutes sans me connecter et que j'actualise une page je retrouve redirigé vers la page de login du controlleur UsersController qui est absent.
Je ne sais pas si c'est un problème de session ou de configuration
voila le message que je reçois en clair:
Error: UsersController could not be found.
Error: Create the class UsersController below in file: app\Controller\UsersController.php
Je dirais que ça vient de la configuration mais sur le papier tu l'as faite correctement :(
dans mon boostrap.php j'ai ceci:
<?php
CakePlugin::loadAll();
*/
Configure::write('Dispatcher.filters', array(
'AssetDispatcher',
'CacheDispatcher'
));
App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
'engine' => 'File',
'types' => array('notice', 'info', 'debug'),
'file' => 'debug',
));
CakeLog::config('error', array(
'engine' => 'File',
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
'file' => 'error',
));
et dans mon core ceci:
<?php
Configure::write('debug', 2);
Configure::write('Error', array(
'handler' => 'ErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED,
'trace' => true
));
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true
));
Configure::write('App.encoding', 'UTF-8');
Configure::write('Routing.prefixes', array('admin','membre'));
Configure::write('Cache.check', true);
Configure::write('Session', array(
'defaults' => 'php'
));
Configure::write('Security.salt', 'mediaDYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mitarget');
Configure::write('Security.cipherSeed', '20015768593096574535424967496836452015');
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
$engine = 'File';
// In development mode, caches should expire quickly.
$duration = '+999 days';
if (Configure::read('debug') > 0) {
$duration = '+10 seconds';
}
Cache::config('_cake_core_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
Cache::config('_cake_model_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_model_',
'path' => CACHE . 'models' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
dans ma route juste ceci:
Router::connect('/', array('controller' => 'Comptes', 'action' => 'login'));
je ne comprends pas le pourquoi après un certains temps ma session s'expire et change de route
Si tu fais le bourrin et lance une recherche sur le mot clef "Users" ça te trouve des trucs ?
salut je ne sais pas ce que c'est que le bourrin et coment ont fais la recherche pouvez vous me l'expliquez?
Je pense qu'il t'indique de rechercher dan tout tes fichiers le mots "Users" et voir si une rediction traine quelque part.
Si non, est-ec des cookies serait la cause des déconnections ?
je suis en production j'ai vidé le cache de mon navigateur et les coockies de sessions mais toujours rien
Bonjour,
ce n'est ni une erreur de cache ni de session normalement cette erreur est fréquente qu'à mon avis ça puisse être un bug du framework parce que y a un Override sur le Model User en Compte donc quand il fait un loginRedirect pour lui c'est toujours UsersController et non ComptesController à essayer pour éliminer cette hypothèse
Cordialement.
Je t'en prie,
essaie de Changer Compte en User je sais que ça sera pénible mais faut voir si le bug vient de la
Cdt.
oui j'avoue mais essaie de prendre 2 controlleurs à part pour tester ou quelque chose comme ça mais perso j'aurais utilisé les standards de Cakephp et non pas une redéfinition.
Ok freezlike
vu que le problème reviens regulièrement je suis obligé de me penché dans cette optique. Mais je pense ça doit être un bug parceque tout les projets dont j'ai développés avec cette version ont ce même problème de redirection vers le controlleur UsersControlleur.
Moi j'aime pas trop l'idée d'utiliser certains eléments par défaut just pour avoir le control total sur mes actions. Encor Merci à vous tous