1

尝试登录用户时出现以下错误:

Call to a member function login() on a non-object

我的登录操作使用外部模型。动作是:

public function login() {

        $this->loadModel('User');

        if ($this->request->is('post')) {

           $theUser = $this->User->find('first', array('conditions' => array('User.username' => $this->request->data['User']['username'])));    

            if($theUser['User']['activated'] == TRUE){

                if ($this->Auth->login($this->request->data)){

                   $this->Session->setFlash('Logged in successfully');

                    $this->redirect(array('controller' => 'admin', 'action' => 'index'));
                } else {

                    $this->Session->setFlash('Username or password is incorrect');
                }
            }else $this->Session->setFlash('User not yet activated. Please Contact administrator.');
        }
    }

传递给的请求数据$this->Auth->login是:

array(
    'User' => array(
        'password' => '*****',
        'username' => 'admin'
    )
)

$this->Auth->login($this->request->data)是导致致命错误的行。

有人可以解释错误的确切含义以及可能导致它的原因吗?

4

1 回答 1

5

您需要检查是否已将 Auth 组件包含在控制器中。例如:

class UsersController extends AppController {

    public $components = array(
        'Auth'
    );

    public function login() { ... }
}

正如@thaJeztah 指出的那样-检查文档是否正确使用,因为您的代码(基于 的用法$this->request,意味着您使用的是2.x)不正确,并且不会测试用户是否存在并且可以登录-但是而是直接将用户登录到他们在登录表单中输入的任何内容。

于 2013-03-15T19:53:21.290 回答