salut tout le monde
j'ai un problème dans la configuration de la table d'authentification dans cakephp, comment configurer la composante Auth pour cherche une autre table que users par exemple table clients ?

19 réponses


burkbo
Réponse acceptée

Salut,
Dans ton AppController, tu peux mettre :

$this->Auth->authenticate = array('Form' => array( 'userModel' => 'Clients'));
burkbo
Réponse acceptée

Apres il faut quand meme indiquer à ton logoutRedirect et redirect les url correspondantes:

$this->Auth->redirect = array('controller'=>'Clients','action'=>'index');
bryou16
Réponse acceptée

T'es fonctions login et logout n'ont rien à faire dans ton modèle. Elles doivent être dans ton ClientsController.

Ensuite pour les composants j'aurais fait comme ça:

public $components = array(
                'Session',
                'Auth'  => array(
                      'authenticate'  => array(
                                'Form'  =>  array(
                                      'userModel' =>  'Client'
                                      )
                                  ),
                      'authorize'   =>  array('Controller'),
                      'loginRedirect' => array('controller' => Clients', 'action' => 'index'
                        )
                );

Il faut également dans ton ClientsController, donner accès qu'au fonction login et logout.

Bonjour,
Quelle version de cakephp utilise-tu?

Cordiablement

j'utilise la version 2.2.5

Salut
je l'a met en beforefilter ?
merci :)

oui bien sur :)

j'ai ajouté le code pour spécifier le model d'authentification mais toujour cakephp me redirectionne vers /users/login

tout l temps le meme probleme, la table dans ma base de donnees s'appelle clients , le nom du controleur ClientController , le nom du model est Client
merci

Il faut que ton controller s'apelle ClientsController (Avec un s)

toujour le meme blem la redirection vers /users/login -_-

montre tout ton code entierement stp

ClientsController

    App::uses('AppController', 'Controller');

    class ClientsController extends AppController{

        public function index(){
            echo "hello i'm index";
        }

        public function add(){
            echo "client added";
        }

        public function beforeFilter(){
            parent::beforeFilter();
        }

    }

le model Client:

    App::uses('AppModel', 'Model');
    class Client extends AppModel{

        public function login(){
            echo "you need to login";
        }

        public function logout(){
            echo "you are disconnected" 
        }

    }

AppController

App::uses('Controller', 'Controller');

class AppController extends Controller {

    public $components = array(
        'Session',
        'Auth'  
    );

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->authenticate = array('Form' => array( 'userModel' => 'Client'));
        $this->Auth->redirect = array('controller'=>'Clients','action'=>'index');
    }

}

bryou16 +1

merci a tous pour votre solutions, mais tout le temps c'est l meme probleme de redirection

Bonjour.
Qu'as-tu fais exactement comme modifications ?
Montres-nous à nouveau tes controllers App et Clients.
Tu t'attaques à l'authentification sans avoir au préalable compris le fonctionnement du Framework, ce n'est pas très judicieux.
Surtout que ce qui m'étonne, c'est que tu dis que CakePHP te redirige vers users/login sans parler d'affichage d'erreur alors que si tu en avais un affichage et que tu nous les mentionnais, elles pourraient nous être utile pour mieux t'aider.

lartak , j'ai compris le fonctionnement de cakephp :) à l'aide de la formation de grafikart
merci à bryou16 et burkbo j'ai résolu mon problème je suis sur la bonne route :)

Bonsoir.

lartak , j'ai compris le fonctionnement de cakephp :)

Pourquoi avoir fait des mélanges entre le modèle et le controller alors (fonctions de connexion et de déconnexion dans le modèle alors que c'est censé être dans le controller) ?

j'ai just oublié mon ami :) , et j'ai déja travaillé une app web en jee alors je connais déja l'architecture MVC