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 应用登录流程的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的增强身份验证对话框未完成登录流程

iOS的登录流程

iOS 上新的 facebook 登录重定向流程

如何从流程中间执行导航 [segue] + ios 应用程序

如何在 iOS Objective-C 中集成“使用 Apple 登录”流程?

如何在 iOS 应用中及时登录 Facebook