我试图让用户登录到 UsersController 内的 2 个不同的表 tmp_users、active_users。
我为每个创建了两个自定义 Auth 组件。
App::uses('FormAuthenticate', 'Controller/Component/Auth');
class TmpUserAuthenticate extends FormAuthenticate {
}
和
App::uses('FormAuthenticate', 'Controller/Component/Auth');
class ActiveAuthenticate extends FormAuthenticate {
}
在我的控制器中,我有这个: 组件:
public $components = array(
'Cookie',
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'home', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'home', 'action' => 'index'),
'authenticate' => array(
'TmpUser' => array(
'userModel' => 'User',
'fields' => array(
'username' => 'email',
'password' => 'password'
)
),
'Active' => array(
'userModel' => 'ActiveUser',
'fields' => array(
'username' => 'email',
'password' => 'password'
),
'scope' => array('crma' => 1)
)
)
)
);
登录动作:这就是我什么。首先检查它是否是 tmp_user;如果不是,则检查它是否是 activer_user。如果之前没有,最后发送了 Flash 消息。
public function login(){
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->write('logged', 'true');
$this->Session->write('verified', 'false');
$this->redirect($this->Auth->redirectUrl());
}else{
if($this->Auth->login()){
$this->Session->write('logged', 'true');
$this->Session->write('verified', 'true');
$this->redirect($this->Auth->redirectUrl());
}else{
$this->Session->setFlash('Invalid username or password, try again');
}
}
}
}
首先:感谢您的时间和帮助。2. 我什至不知道这是否是正确的做法 3. 如果这是正确的,我做错了什么?4. 我需要使用相同的登录表单,希望有人能帮助我。
此致