2012-02-12 93 views
7

我在爲我的iPhone應用程序和服務器建立基礎。我有用戶將註冊並從iPhone應用程序登錄。在正常的網站登錄中,http服務器將提供cookie以允許用戶的後續請求保持身份驗證。我應該如何在iPhone上處理這個問題?我應該每次只發送一次用戶/密碼嗎?我有一個NSURLConnection GET或POST?這似乎過分。或者我使用ASIHTTPRequest框架來使用Cookie。任何人都可以指出我正確的實施方向嗎?如何處理IOS中的用戶身份驗證持久性?

謝謝!

回答

8

在每個請求中發送用戶名和密碼並不是很好。

你可以使用任何你想發送cookies。這只是另一個HTTP頭。但是,這引出了cookie中的內容的問題。這取決於你的客戶機/服務器體系結構是什麼。 Web應用程序使用會話密鑰,因爲傳統的Web客戶端沒有保存任何狀態,所以應用服務器不得不這樣做。本機客戶端可以具有各種狀態,因此通常不需要服務器來提供該狀態。

但是你需要認證。這就是OAuthOAuth 2的用途。它們允許您驗證一次,然後使用令服務器端可能失效的令牌。有點像非常長時間沒有數據的會話。

他們有點複雜,但有服務器和客戶端的開源庫,或者你可以自己推出。如果你擁有客戶端和服務器,大部分的複雜功能是獲得原始的令牌,你可以將其短路。 OAuth會變得非常複雜,因爲所有請求都使用祕密令牌進行簽名。 OAuth 2可以像Cookie中的共享密鑰一樣簡單(因此需要SSL)。

+0

非常有趣的話題非常詳細的答案。謝謝。 – Francesco 2012-02-13 11:28:22

+1

如果我只有兩條腿,OAuth是否過量?只是我的iPhone和服務器。單個訪問令牌(保存在iPhone上)是否可以充分發揮作用? – Ryan 2012-02-16 16:00:40

+0

只要您通過SSL完成所有請求,是的。這幾乎是OAuth 2退化到最簡單的流程。 – smparkes 2012-02-16 17:43:54

相關問題