CakePHP - 基本登录功能无法正常工作

时间:2014-09-15 12:19:10

标签: cakephp authentication login

我正在尝试使用CakePHP来创建基本的登录功能。到目前为止CakePHP正在赢得胜利。我遵循了基本的博客教程,基于此我尝试创建一个类似于登录的东西。

我唯一的区别是我没有使用用户模型,而是使用自定义雇主模型,我使用电子邮件/密码而不是用户名/密码。

然而,我得到的是“您的用户名或密码不正确。”

AppController.php

App::uses('Controller', 'Controller');

class AppController extends Controller {

    public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect' => array(
                'controller' => 'schedules',
                'action' => 'index'
            ),
            'logoutRedirect' => array(
                'controller' => 'employers',
                'action' => 'login',
                'home'
            ),
            'authenticate' => array(
                'Form' => array(
                    'fields' => array(
                        'username' => 'email',
                        'password' => 'password'
                    ),
                    'userModel' => 'Employer',
                    'passwordHasher' => 'Blowfish'
                )
            )   
        )
    );
}

EmployersController.php

<?php
App::uses('AppController', 'Controller');
class EmployersController extends AppController {

public $helpers = array('Form');

public function beforeFilter()
{
    parent::beforeFilter();

    $this->Auth->allow('login');
}

public function login()
{
    $layout = 'login';
    $this->layout = $layout;

    if($this->request->is('post'))
    {
        debug($this->Auth->login());
        if($this->Auth->login())
        {
            return $this->redirect($this->Auth->redirect());
        }
        else
        {
            $this->Session->setFlash('Your username or password was incorrect.');
        }

        debug($this->request->data['Employers']['password']);
    }
}
}

Login.ctp

<div id="login-container">
<h1>Login</h1>
<?php
    echo $this->Form->create('Employers');
    echo $this->Form->input('email', array('label' => false, 'placeholder' => 'Email'));
    echo $this->Form->input('password', array('label' => false, 'placeholder' => 'Password'));
    echo $this->Form->submit();
    echo $this->Form->end();
?>

当我调试$ this-&gt; request-&gt;数据时,数据的结构就像数据[“雇主”] ['电子邮件']&amp;数据[ “雇主”] [ '密码']。这可能是不对的,因为我的模型叫做雇主。

这是否正确并且登录功能是否会中断?如果是,我该如何解决? 或者还有其他我忽略的东西。

1 个答案:

答案 0 :(得分:2)

在你的login.ctp中,

它应该是echo $this->Form->create('Employer');而不是s,所以删除s并尝试它。

希望它有所帮助。