您好我有一个表名chat_users
我已将users
表连接到最后几个项目,它运行正常。但这是我的第一个项目,我有一个不同的表名chat_users
我想使用username
和password
我试过但无法登录。
请帮帮我。
代码 -
AppController.php
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $components = array('Auth', 'Session', 'Email', 'Cookie', 'RequestHandler', 'Custom');
public $helpers = array('Html', 'Form', 'Cache', 'Session','Custom');
function beforeFilter() {
parent::beforeFilter();
$this->Auth->authenticate = array(
'Form' => array (
'scope' => array('ChatUser.is_active' => 1),
'fields' => array('ChatUser.username' => 'username', 'ChatUser.password' => 'password'),
)
);
}
}
?>
UsersController.php
<?php
App::uses('AppController', 'Controller');
class UsersController extends AppController {
public $name = 'Users'; //Controller name
public $uses = array('ChatUser');
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('login');
}
public function index() {
}
public function login() {
$this->layout='login';
if ($this->request->is('post')) {
if (!$this->Auth->login()) {
$this->Session->setFlash(__('Invalid username or password, try again'), 'error_message');
$this->redirect($this->Auth->redirect());
}
}
if ($this->Session->read('Auth.ChatUser')) {
return $this->redirect(array('action' => 'index'));
exit;
}
}
public function logout() {
return $this->redirect($this->Auth->logout());
}
}
以上查询我失踪了。
见截图 -
答案 0 :(得分:0)
您的auth组件配置不正确。您缺少相应的userModel
选项,该选项定义要使用的模型的名称
并且fields
配置无法按照您使用它的方式工作,密钥必须命名为username
和password
,然后该值可以包含实际列但是,由于您的列显然使用默认名称,因此根本不需要使用此选项。
$this->Auth->authenticate = array(
'Form' => array (
'scope' => array('ChatUser.is_active' => 1),
'userModel' => 'ChatUser'
)
);
除非您通过Auth.User
明确更改会话密钥,否则会话密钥始终为AuthComponent::$sessionKey
:
$this->Auth->sessionKey = 'Auth.ChatUser';
但是,您最好使用auth组件来访问用户数据:
// Use anywhere AuthComponent::user('id') // From inside a controller $this->Auth->user('id');
另见