Вопрос

I'm using Cakephp 2.4 and I'm having trouble with the Auth for a simple authentication.

I use the column "mail" in my db as login.

What I do:

in AppController.php

public $components = array('DebugKit.Toolbar', 'Session', 'Auth' => array(
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login',
            'plugin' => false
        ),
        'authError' => 'Pensiez-vous réellement que vous étiez autorisés à voir cela ?',
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'mail')
            )
        )
    ));

in UsersController.php

public function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                return $this->redirect($this->Auth->redirectUrl());
            } else {
                $this->Session->setFlash(
                    __('Username ou password est incorrect'),
                    'default',
                    array(),
                    'auth'
                );
            }
        }
    }

in login.ctp

<div class="users form">
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User');?>
    <fieldset>
        <legend><?php echo __('Merci de rentrer votre nom d\'user et mot de passe'); ?></legend>
        <?php echo $this->Form->input('username');
        echo $this->Form->input('password');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Connexion'));?>
</div>

I tried with a clear and hashed password but every time he won't log me.

Это было полезно?

Решение

Looks like you're using the wrong form field... here's my code, which is working in one of my applications:

Controller:

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

View:

echo $this->Form->create();
    echo $this->Form->input('email');
    echo $this->Form->input('password');
echo $this->Form->end(__('Sign in', true));

Please notice that I'm using a "email" input in my form, and not "username" which is wrong.

Другие советы

In your view you need to use field name "mail" instead of "username".

echo $this->Form->input('mail');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top