2012-02-12 100 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

相关问题