尝试登录用户时出现以下错误:
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)
是导致致命错误的行。
有人可以解释错误的确切含义以及可能导致错误的原因吗?
答案 0 :(得分:5)
您需要检查是否已在控制器中包含Auth组件。例如:
class UsersController extends AppController {
public $components = array(
'Auth'
);
public function login() { ... }
}
正如@thaJeztah指出的那样 - 检查the docs是否正确使用,因为您的代码(基于$this->request
的用法,暗示您使用的是2.x)是不正确的不测试用户是否存在并且可以登录 - 而是直接将用户登录到登录表单中的任何内容。