2010-08-25 66 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