Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone开发-如何通过远程服务认证用户?_Iphone_Objective C_Authentication - Fatal编程技术网

iPhone开发-如何通过远程服务认证用户?

iPhone开发-如何通过远程服务认证用户?,iphone,objective-c,authentication,Iphone,Objective C,Authentication,我正在同时开发一个iPhone应用程序和一个网站。我计划为网站制作一个API,这样应用程序就可以发送一个URL请求来完成任务。例如,他们向www.example.com/journal/add/1发送请求,并将id为1的项目添加到他们的日志中 我不知道的是,如何通过iPhone应用程序对它们进行身份验证?我希望他们只登录一次,并保存他们的“会话”。我是否应该将用户名/密码存储在plist中,然后在每次请求时对其进行身份验证(因此,我必须通过每个请求发送他们的用户名和密码哈希,比如www.exam

我正在同时开发一个iPhone应用程序和一个网站。我计划为网站制作一个API,这样应用程序就可以发送一个URL请求来完成任务。例如,他们向
www.example.com/journal/add/1
发送请求,并将id为
1
的项目添加到他们的日志中


我不知道的是,如何通过iPhone应用程序对它们进行身份验证?我希望他们只登录一次,并保存他们的“会话”。我是否应该将用户名/密码存储在plist中,然后在每次请求时对其进行身份验证(因此,我必须通过每个请求发送他们的用户名和密码哈希,比如
www.example.com/journal/add/1/user/hash
?)似乎有点骇人听闻。

你可以尝试oauth,或者实现一个简单的密钥系统,登录的用户可以通过任何一种方式获得一个密钥来进行后续请求,你可以参考facebook、twitter、youtube API,你可以可以看到他们是如何做到的,从那里得到一些想法(他们都非常相似),尽管他们专注于让外部用户打电话,但你仍然可以做类似的事情…

而不是保持他们的登录和通过,你应该保持sessionid(使用时间、登录和md5校验和)

所以,首先,使用php脚本进行正常授权(您需要使用数据库),如果成功,将sessionid返回到iphone客户端。iphone客户端将其存储在本地。然后,下次用户启动应用程序时,检查sessionid是否存在:如果存在,则将其发送到服务器进行身份验证。服务器检查sessionid是否在数据库中-如果存在,则将成功返回到客户端并更新数据库中的会话id(请记住,您可以将SessionID设置为时间戳,因此,如果长时间处于非活动状态,则用户必须重新登录)


听起来很复杂,但没那么糟糕;)

因此,为了实现简单的密钥系统,我只需要在服务器上有一个带有userID/key字段的表……当用户登录iPhone时,它会将密钥保存在iPhone上和数据库中。当用户想做什么时,iPhone会发送类似于
example.com/journal/add/1/key的消息,服务器会查找密钥以查看哪个用户被分配到该密钥?是的,当用户登录u时,为用户id分配一个随机唯一的密钥,然后后续的请求中包含该密钥…有一些传统的安全措施,如签名等,以避免各种攻击,例如,如果您将密钥-用户对作为纯文本发送,有人可以嗅出它,然后u使用这些信息来发出他们自己的请求..好吧,那么应用程序每次发出请求时都会将会话ID发送到服务器?服务器会检查每个请求的会话ID,如果有,获取该会话的用户ID,并对该用户ID应用用户请求的任何操作?听起来像是一个计划。@LoganSerman是的,没错。您可以使用会话id快速、轻松地识别用户,而无需重新验证