0

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

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

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

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

我猜,如果这不可能,我将不得不在 Cake 中手动编写从 Vbulletin 接收到的会话 cookie,但是这样做时我将如何限制对控制器中各种视图和方法的访问?

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

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

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

链接到Cakephp 手动登录未启动会话

更新1:我们会,我认为这是有效的,直到我删除了调试工具包。现在,在我登录后,我会自动注销,真的很奇怪。

如果我想调用 $this->Auth->login($loginData),我不应该能够提供 $loginData,在我的例子中,它看起来像这样:

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

)

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

这里有什么想法吗?

4

1 回答 1

0

您将必须实现连接到“Vbulletin”的自定义身份验证处理程序。然后,当您登录用户时$this->Auth->allow('add');应该可以正常工作。

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

于 2013-04-26T14:18:36.880 回答