Cakephp - 将auth与第三方提供商一起使用

时间:2013-04-25 21:59:32

标签: cakephp authorization vbulletin

我正在创建一个与Cakephp中的Vbulletin交互的XML-RPC。我目前拥有触及终点,登录用户,检索数据集以及cookie等功能。

现在,来自Cakephp的调用,我有一个用户表,我只存储,vbulletin的用户名,vbulletin用户ID和他们的头像。我想实现某种类型的身份验证。我不完全确定这是否可行。我有一个用户表的唯一原因是存储一组最小的信息。当用户登录Cakephp端时,它实际上是向vbulletin api发送xml-rpc客户端调用,并使用api登录用户。

所以,在所有这些已知的情况下,是否可以限制蛋糕内各种视图等的访问?我想使用一些基本的auth组件,例如:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('add');
}

我猜,如果不可能,我将不得不手动编写从Cake中的Vbulletin收到的会话cookie,但是如何限制访问控制器中的各种视图和方法?< / p>

更新:我最终使用以下内容来完成此任务。

由于我将vbulletin用户ID存储在users表中,因此我能够:

$user = $this->User->findByVbulletinid($userid);
$user = $user['User'];
$this->Auth->login($user);

链接到Cakephp manual login not initiating session

Update1 :我们认为这是有效的,直到我删除了调试工具包。现在,登录后,我会自动退出,真奇怪。

如果我想打电话给$ this-&gt; Auth-&gt;登录($ loginData),我应该不能提供$ loginData,在我的情况下,看起来像这样:

Array
(
    [User] => Array
        (
            [username] => testuser
            [password] => hashedpasswordhere
        )

)

基本上,用户控制器中的登录方法,我不能简单地调用$ this-&gt; Auth-&gt; login()因为我需要先从表单获取凭据,然后通过API登录用户对于vbulletin。

这里有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您必须实现与“Vbulletin”相关联的自定义Authentication Handler。然后,当您在$this->Auth->allow('add');中记录用户时,应该可以正常工作。

还要考虑记录用户的其他方法。如果外部服务中断,会发生什么?您的用户根本无法登录?