2013-04-25 70 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

相關問題