2010-08-25 104 views
3

我有一個我試圖調整的Zend Framework應用程序,所以我可以使用iPhone應用程序。我的ZF應用程序中的所有內容都需要您先登錄。如何擴展Zend Framework應用程序以允許RESTful驗證?

在瀏覽器中你可以到myapp.com/auth/login並獲得登錄表單。當你成功進行身份驗證時,會設置一個cookie以記住你已經登錄(我認爲這是它的工作原理)。它還會將您重定向到主頁並顯示HTML。

理想情況下,我的iPhone應用程序將對我的ZF應用程序進行身份驗證(以某種方式)並獲得JSON響應。然後它可以使未來的請求被認證。到目前爲止,我的iPhone應用程序將登錄憑據設置爲POST數據並提交到登錄頁面,ZF應用程序返回主頁(或驗證失敗頁面)的HTML。

我正在尋找一些「最佳實踐」的答案。也許我在問錯誤的問題。也許我不需要考慮「RESTful認證」。調整我的Zend Framework應用程序以允許我的iPhone應用程序進行身份驗證並提出請求的最佳方法是什麼?

回答

1

也許你可以在你的iPhone應用程序和你的ZF應用程序之間實現兩段OAuth認證。

你可以在這裏看到的更多信息:

http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iii-security-architecture/

http://oauth.net/

除此之外,總是有手動傳遞Cookie值回服務器的替代品。這應該是足夠:

  1. 獲取POST響應
  2. 的標頭中提取頭中的cookies和保存的地方
  3. 當您執行到服務器的第二次請求您手動添加cookie頭

我認爲應該這樣做。

+0

我無法更改當前的身份驗證機制。此外,由於我使用ASIHTTPRequest庫在iPhone上執行請求,因此Cookie沒有問題。但我不確定如何處理Auth控制器中的請求。我需要返回JSON,但是我應該在成功/失敗的身份驗證時返回哪些JSON?我需要使用JSON和Zend Framework的REST入門/最佳實踐? – Andrew 2010-08-26 14:13:55

+1

我不確定這與REST有什麼關係......當我必須使用AJAX請求返回JSON時,我通常會檢查它是否是XmlHttpRequest(),如果是這樣,請禁用佈局視圖和視圖呈現器,然後只是回顯Zend_Json :: encode()輸出。我想你可以使用一個GET參數或獲取User-Agent,並基於該參數返回JSON而不是普通輸出。 (如果我已經正確理解你想要做什麼) – mobius 2010-08-29 16:24:11

+0

Zend Framework 1.11(現在處於測試階段)添加了一個Zend_Http_UserAgent助手,可以幫助您檢測請求是否來自您的應用 - 您可以在請求中設置自定義用戶代理並在ZF中檢測到它,並只返回JSON。 http://devzone.zend.com/article/12654-Zend-Framework-1.11.0BETA1-Released – 2010-10-15 15:27:49