iOS 应用登录流程
Posted
技术标签:
【中文标题】iOS 应用登录流程【英文标题】:iOS App Login Flow 【发布时间】:2012-08-06 15:53:19 【问题描述】:我正在开发我的第一个 ios 应用程序,它允许用户登录我们网站上的帐户,并查看/添加/编辑/删除数据库中的记录。
我编写了一个基本的应用程序来处理这样的过程;
应用开始运行。
每个视图控制器从viewWillAppear
方法中调用checkAuth
方法。此方法获取存储在应用程序中的用户名和密码,并将它们作为GET
变量在dataWithContentsOfURL
请求中发送到服务器。然后检查生成的JSON
,如果响应失败,则会显示一个警报对话框,并且用户被带到另一个选项卡(我正在使用选项卡栏控制器),提示他们输入登录名详情。
使用此方法,每次不同的视图控制器接管(我的故事板文件中的每个场景)时,都会调用 auth 方法。这似乎有点浪费。有没有更好的方法来确保用户的登录凭据正确?
谢谢。
【问题讨论】:
【参考方案1】:在应用程序中存储用户名和密码是不好的做法。如果修改后端在您的控制范围内,最好对后端进行身份验证,并取回仅对该设备有用的令牌。
从这里,您将令牌与每个请求一起传递,如果后端确定您已注销,那么它应该返回一条错误消息。这样,身份验证将在临时基础上进行检查,并且仅在发送请求时进行。
我认为没有理由在每次加载视图时都这样做,除非有业务需求。
【讨论】:
【参考方案2】:您为什么不为此使用“通信管理”单例?它将处理身份验证和与服务器通信的所有任务,并且您的每个控制器都与它进行通信,而无需直接与服务器交互。
【讨论】:
好主意,但仍然没有解决“浪费”带宽的问题。【参考方案3】:您可能有一个不活动会话超时:通过 NSTimer。 在成功登录时设置会话超时标记(例如登录时间加上 10 分钟)。 当用户使用应用程序时,不断将存储的会话超时时间更新为当前时间加上 10 分钟(使计时器无效并创建一个新计时器)。 当应用程序退出或进入后台时,计时器无效。 让计时器在计时器超时时调用注销方法。
哦,不要在应用程序中存储用户名/密码。使用钥匙串加密存储它们(如果需要将它们保持在本地)。我建议只将用户名存储在本地。
【讨论】:
以上是关于iOS 应用登录流程的主要内容,如果未能解决你的问题,请参考以下文章
如何从流程中间执行导航 [segue] + ios 应用程序