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

139
24

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

Я использую столбец "mail" в своем db как логин.

Что я делаю:

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

в UserController.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>

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

спросил(а) 2014-04-01T10:51:00+04:00 7 лет, 6 месяцев назад
1
Решение
65

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

контроллер:

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

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

ответил(а) 2014-04-01T11:00:00+04:00 7 лет, 6 месяцев назад
65

По вашему мнению, вам нужно использовать поле "mail" вместо "username".


echo $this->Form->input('mail');

ответил(а) 2014-04-01T11:05:00+04:00 7 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема