Cakephp 2.4 Аутентификация

Я использую Cakephp 2.4, и у меня проблемы с аутентификацией для простой аутентификации.

Я использую столбец «почта» в своей базе данных в качестве логина.

Что я делаю:

в 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')
            )
        )
    ));

в 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'
                );
            }
        }
    }

в файле 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>

Я пробовал с четким и хэшированным паролем, но каждый раз он не регистрирует меня.


person hidewak    schedule 01.04.2014    source источник
comment
лол, я просто пробую что-то новое, я даю функции входа в систему данные $ this-> request->, и он что-то делает, если кто-нибудь может сказать мне, хороший ли это способ?   -  person hidewak    schedule 01.04.2014
comment
Что ж, вероятно, это не лучший способ, потому что функция входа в систему возвращает true с каждым паролем.   -  person hidewak    schedule 01.04.2014


Ответы (2)


Похоже, вы используете неправильное поле формы... вот мой код, который работает в одном из моих приложений:

Контроллер:

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

Просмотр:

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

Обратите внимание, что я использую в своей форме «электронную почту», а не «имя пользователя», что неверно.

person ToX 82    schedule 01.04.2014
comment
В компоненте $ поле формы не замечает его, какое поле ему нужно использовать в качестве имени пользователя? В моем случае это почта - person hidewak; 01.04.2014
comment
Да, это поле электронной почты. Просто переименуйте мою электронную почту в свою почту, и она должна работать. - person ToX 82; 01.04.2014
comment
Хорошо, я попробую, когда найду, где я сделал другую ошибку, потому что теперь функция входа в систему cakephp возвращает каждый раз true, я, вероятно, где-то делаю что-то не так: p - person hidewak; 01.04.2014

По вашему мнению, вам нужно использовать имя поля «почта» вместо «имя пользователя».

echo $this->Form->input('mail');
person ADmad    schedule 01.04.2014