如何在CakePHP 2.0.4中为Auth组件使用不同的模型?

时间:2012-01-25 00:03:38

标签: php cakephp authentication cakephp-2.0

这看起来很琐碎,但我真的找不到可以改变的地方。 我想使用我的“播放器”模型而不是用户,但每次我继续播放/播放/登录时,它会将我重定向到“缺少控制器”页面并将更改链接到/ users / login。

我试过了:

public $components = array(
    'Session',
    'Auth' => array(
        'authenticate' => array('all' => array('userModel' => 'Player'))
     )
);

function beforeFilter() {
    $this->Auth->authenticate = array('all' => array('userModel' => 'Player'));
}

编辑:已解决

'loginAction' => array('controller' => 'players', 'action' => 'login')

在$ components数组帮助,我认为:D

3 个答案:

答案 0 :(得分:4)

我想问题是你没有提供身份验证系统。您提供了一些设置,可用于所有将要选择的身份验证系统,但您还没有选择一个(您必须提供至少一个,如Form,Basic,Digest,ecc ..)。

$this->Auth->authenticate = array(
    'all' => array('userModel' => 'Member'),
    'Form',
    'Basic'
);

(或$components数组中的相同)

答案 1 :(得分:0)

你应该这样做

public $components=array(
    'Session',
    'Auth'=>array(
        'authenticate'=>array(
            'Form'=>array(
                'userModel'=>'Player',
             )
        ),
        'loginAction'=>array('controller'=>'Players', 'action'=>'login'),

答案 2 :(得分:0)

在控制器中使用此代码:

public $components = array(
    'Auth' => array(
    'loginRedirect' => array(
        'controller' => 'applications',
        'action' => 'index'
    ),

    'logoutRedirect' => array(
        'controller' => 'applications',
        'action' => 'login'
    ),

    'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish',
                'userModel' => 'Application'
            )
        ),      
    )
);

不需要为beforeFilter()函数添加任何代码。 $ components加载Auth conponent。

由于 Sujay