1

我做了什么

我使用 Cookbook 的这一部分来创建我的身份验证: Link 完成后,我将字段更改为电子邮件和密码(在 AppController.php 中):

public function beforeFilter() {
    $this->Auth->allow('index');
    $this->Auth->fields = array('username' => 'email', 'password' => 'password');
}

发生了什么

登录表单总是说我的密码/电子邮件组合不正确。经过一段时间的搜索和尝试,我在 UsersController 的 login() 函数中的 Auth->login() 参数中添加了“$this->request->data”:

public function login(){
    $this->layout = 'login';
    if ($this->request->is('post')){
        if ($this->Auth->login($this->request->data)){
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Ongeldig email adres of wachtwoord. Probeer het AUB opnieuw'));
        }
    }
}

这有效,但现在我不能使用“$user['id']”来获取登录用户 ID。它说它不知道 $user 变量。

我期望发生的事情

首先,它应该在没有我添加参数的情况下让用户登录。其次,它应该打印了登录用户的 ID。

我希望有人可以帮助我解决这个问题。提前致谢!

4

1 回答 1

0

字段现在在身份验证数组中:

   'authenticate' => array(
        'Form' => array(
            'fields' => array('username' => 'email', ...)
        )
    )

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

要么与

$this->Auth->authenticate = ...

或者

public $components = array(
    'Auth' => array(
        'authenticate' => ...
    )
);

但是,正如 PHP 自由职业者所说,这是有据可查的。

你用的是什么版本的食谱?2.x 的?

于 2012-12-12T14:56:59.397 回答