我有一个CakePHP 2.0应用程序,它使用带有User
模型的AuthComponent成功登录以管理帖子和其他控制器和模型。我称之为网站的“超级管理员”部分。
但是,我需要为广告客户创建一个完全独立的网站部分。我创建了模型Advertiser
和控制器AdvertisersController
。我还创建了表advertisers
。我能够成功添加广告客户用户,但是当我尝试登录时,它会因无效的用户名或密码错误而失败。
我遵循了食谱中Authentication的建议,并在beforeFilter
的{{1}}中尝试了这两个选项:
AdvertisersController
有什么想法吗?是否不能将AuthComponent与两个不同的型号/控制器一起使用?
编辑:我将我的广告商控制器更新为:
$this->Auth->authenticate = array(
AuthComponent::ALL => array(
'userModel' => 'Advertiser',
'fields' => array('username' => 'username', 'password' => 'password'),
'Form',
'Basic'
));
$this->Auth->authenticate = array(
'Form' => array('userModel' => 'Advertiser'),
'Basic' => array('userModel' => 'Advertiser')
);
现在登录完全失败 - 没有失败的密码错误。我甚至尝试过伪造的用户名和密码。这是我的控制器中的登录方法:
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->authenticate = array(
AuthComponent::ALL => array('userModel' => 'Advertiser'),
'Form',
'Basic'
);
$this->Auth->allow('add', 'logout'); // Letting advertisers register themselves
}
我在第一个if结束后添加了一个public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect(array('controller' => 'advertisers', 'action' => 'admin'));
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
语句并得到一个空数组。甚至无法进入登录页面。
此外,表单的输出是这样的 - POST是方法。
else print_r($this->data); exit;
答案 0 :(得分:0)
我在此问题中提供了更多信息here。 Joshua是一个很大的帮助,为这个场景整理了管理员前缀。如果您的应用程序看起来“太多” - 请参阅此处的评论。它看起来比它复杂,它有助于保持用户控制更加明确。