CakePHP 2:4:Authcomponent无法正常工作

时间:2014-11-15 08:47:25

标签: cakephp cakephp-2.4

我有两张桌子

1)aucusers 2)user_types

对于使用auth组件,我在appcontroller中使用了以下代码

public $components = array('Session','RequestHandler','Paginator'=>array('limit'=>4),'Auth'=>array(
    'loginAction' => array(
        'controller' => 'aucusers',
        'action' => 'login'
    ),
        'loginRedirect' => array('controller' => 'aucusers','action' => 'add'),
        'logoutRedirect' => array('controller' => 'aucusers','action' => 'add'),
        'authError'=>'You can not access this page!!',
    ));



public function beforeFilter() {

    $this->set('logged_in', $this->Auth->loggedIn());
    $this->set('current_user',$this->Auth->user());
     parent::beforeFilter();
        $this->Paginator->settings = array(
          'limit'=>4
    );

在Hash密码的模型中,我使用了

     public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $passwordHasher = new SimplePasswordHasher();
            $this->data[$this->alias]['password'] = $passwordHasher->hash(
                $this->data[$this->alias]['password']
            );
        }
        return true;
    }

在aucusers控制器中我添加了

public function login() {

    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        }
        $this->Session->setFlash(__('Invalid username or password, try again'));
    }
}

    public function logout() {
        return $this->redirect($this->Auth->logout());
    }

添加

$this->Auth->allow()

我已经创建了一个用户。但是当我要登录时,它会显示我

用户名或密码无效,请重试。

1 个答案:

答案 0 :(得分:0)

据我所知,您必须定义您正在使用的散列方法。

来自http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => array(
                    'className' => 'Simple',
                    'hashType' => 'sha256'
                )
            )
        )
    )
);