Cakephp 2.4身份验证

时间:2014-04-01 07:51:41

标签: php cakephp authentication cakephp-2.4

我正在使用Cakephp 2.4,我在使用Auth进行简单身份验证时遇到了问题。

我在我的数据库中使用“mail”列作为登录。

我的所作所为:

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

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>

我尝试了一个清晰的哈希密码,但每次他都不会记录我。

2 个答案:

答案 0 :(得分:1)

您似乎正在使用错误的表单字段...这是我的代码,它在我的某个应用程序中运行:

<强>控制器:

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

请注意我正在使用&#34;电子邮件&#34;以我的形式输入,而不是&#34;用户名&#34;这是错误的。

答案 1 :(得分:1)

在您的视图中,您需要使用字段名称“mail”而不是“username”。

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