4 votes

Utilisation de l'email à la place du nom d'utilisateur dans le composant d'authentification CakePHP

Je travaille sur cakephp 2.x. Mon problème est que je ne veux pas utiliser le nom d'utilisateur pour me connecter... Je prends l'e-mail et le mot de passe de l'utilisateur et je vérifie cet e-mail et ce mot de passe dans la base de données. J'ai une table dans ma base de données nommée user et elle a 3 champs id, email et password.

Voici mon code

Modèle

AppController

 class AppController extends Controller {
   public $components = array(
   'Session',
'Auth'=>array(
    'loginRedirect'=>array('controller'=>'users', 'action'=>'admin'),
    'logoutRedirect'=>array('controller'=>'users', 'action'=>'admin'),
    'authError'=>"Vous ne pouvez pas accéder à cette page",
    'authorize'=>array('Controller') 
   )
);

public function isAuthorized($user) {
}

  public function beforeFilter() {
  $this->Auth->allow('index');

UserController

public function login()
   {
     if ($this->request->is('post')) {
       if ($this->Auth->login()) {
        $this->redirect($this->Auth->redirect());
    } else {
        $this->Session->setFlash('Votre combinaison e-mail/mot de passe était incorrecte');
    }
}
}

login.ctp

 form->create();

  echo $this->form->input('email');
  echo $this->form->input('password');

    echo $this->form->end('Authentifier');
   ?>

9voto

dhofstet Points 8180

Vous pouvez le configurer avec :

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

Voir aussi Configuration des gestionnaires d'authentification dans le manuel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X