我正在构建一个PHP的REST Web服务,旨在与iOS和Android等移动设备一起使用。基本上,GET请求用于返回带有请求结果的JSON数据,POST和DELETE请求用于向服务添加数据。
基本上,我需要实现用户登录/身份验证系统,以便当用户请求特定于他们的数据时,例如他们自己的某些内容列表,或者他们尝试添加数据时,他们需要登录。
我知道我需要使用SSL来保护注册和身份验证,但我想避免重新发明内容。我正在寻找这样做的解决方案?任何建议将不胜感激! 谢谢!
答案 0 :(得分:5)
如果您正在构建一个真正的REST Web服务,那么您就无法进行会话 - 即让用户登录一次,然后服务器记住该会话以及用户为每个后续呼叫使用该会话。对于REST服务,服务器将不记得" state"。
每个州都可以完全理解它的表现形式 包含它提供的转换集和 过渡局限于一系列可以理解的统一行动。
(资料来源:http://tech.groups.yahoo.com/group/rest-discuss/message/5841)
这实际上使您的工作更轻松,因为每次调用服务器都必须带有唯一标识符来验证用户。您的选择包括发送用户名/密码组合,密钥和其他参考以识别用户,或者可能两者。因此,当用户"登录"时,您会记住他们的详细信息客户端(即在网络表单中的javascript中,或通过您的应用程序并记住iPhone / Android的本地存储中),然后将每个详细信息发送给每个人每一个电话。您可以使用休息调用来验证登录详细信息,但它赢了; t返回会话。
所以用pseduo代码回答:
PHP方面很简单:每个电话都会显示:
显然,您还可以使用不需要身份验证的服务;这可能包括注册。
答案 1 :(得分:0)
将Oauth消费者密钥和秘密捆绑到客户端应用程序。使用Oauth 1授权标头进行HTTPS请求。现在使用oauth库很容易签名。
对于网络应用,没办法。