2013-04-25 131 views
0

我正在创建与Cakephp中的Vbulletin交互的XML-RPC。我目前有功能打到终点,登录用户,并检索数据集,以及饼干等。Cakephp - 使用第三方提供商的身份验证

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

因此,所有这一切都知道,是否有可能限制访问蛋糕内的各种视图等?我想使用一些基本身份验证的组件,如:

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

我猜测,如果这是不可能的,我必须手动写在蛋糕从vBulletin收到的会话cookie,但是如何限制对控制器内各种视图和方法的访问呢?

更新:我结束了使用下面来完成此操作。

因为我存储的用户表中的vBulletin的用户ID,我能:

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

链接Cakephp manual login not initiating session

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

如果我要调用$这个 - > Auth->登录($ loginData),我不应该能够提供$ loginData,这在我的情况,应该是这样的:

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

) 

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

这里有什么想法吗?

回答

0

您必须实施连接到“Vbulletin”的自定义Authentication Handler。然后当你登录$this->Auth->allow('add');的用户应该工作得很好。

也考虑用户登录的其他方法。如果外部服务关闭,会发生什么情况?您的用户将无法登录?

+0

谢谢,这让我非常接近我需要完成的事情。我结束了必须做到以下几点: '$ user = $ this-> User-> findByVbulletinid($ userid); $ user = $ user ['User'];您可以在第三方部分提出一个好的观点,但如果VBulletin网站已关闭,那么对于希望登录的现有用户,我该怎么办?我想我也可以存储他们输入的密码,首先尝试通过api登录,然后如果失败,请在本地登录? – Whnunlife 2013-04-26 15:26:07

+1

我在堆栈上讨论这个资源的资源是:http://stackoverflow.com/questions/12182038/cakephp-manual-login-not-initiating-session – Whnunlife 2013-04-26 15:39:14

相关问题