CakePHP Auth组件 - 可以有两个单独的登录?

时间:2012-05-24 14:23:12

标签: cakephp authentication

我有一个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;

1 个答案:

答案 0 :(得分:0)

我在此问题中提供了更多信息here。 Joshua是一个很大的帮助,为这个场景整理了管理员前缀。如果您的应用程序看起来“太多” - 请参阅此处的评论。它看起来比它复杂,它有助于保持用户控制更加明确。