iOS App登录流程

时间:2012-08-06 15:53:19

标签: iphone ios cocoa-touch ios5 login

我正在开发我的第一个iOS应用程序,它允许用户登录我们网站上的帐户,并查看/添加/编辑/删除数据库中的记录。

我写了一个基本的应用程序来处理这样的过程;

应用程序开始运行。

每个视图控制器都在checkAuth方法中调用viewWillAppear方法。此方法获取存储在应用程序中的用户名和密码,并将其作为GET请求中的dataWithContentsOfURL变量发送到服务器。然后检查生成的JSON,如果响应失败,则显示警告对话框,并且用户被带到另一个选项卡(我使用标签栏控制器),提示他们输入他们的登录信息。

使用此方法,每次不同的视图控制器接管(我的storyboard文件中的每个场景)时,都会调用auth方法。这似乎有点浪费。有没有更好的方法来确保用户登录凭据是否正确?

感谢。

3 个答案:

答案 0 :(得分:3)

为什么不为此使用“通信管理”单例?它将处理验证和与服务器通信的所有任务,并且每个控制器都与它进行通信,而不直接与服务器交互。

答案 1 :(得分:3)

在应用中存储用户名和密码是不好的做法。如果修改后端在您的控制范围内,那么最好对后端进行身份验证,并获取仅对该设备有用的令牌。

从此处,您将令牌与每个请求一起传递,如果后端确定您已注销,则应返回错误消息。这样,将在临时的基础上检查身份验证,并且仅在发送请求时进行身份验证。

除非有业务需求,否则我认为没有理由每次加载视图时都这样做。

答案 2 :(得分:1)

您可以暂停会话超时:通过NSTimer。 成功登录时设置会话超时标记(例如登录时间加上10分钟)。 当用户使用应用程序时,请将存储的会话超时时间更新为当前时间加10分钟(使计时器无效并创建新计时器)。 当app退出或进入后台时,计时器无效。 当计时器超时时,让计时器调用注销方法。

哦,不要在应用中存储用户名/密码。使用钥匙串加密存储它们(如果需要,将它们保存在本地)。我建议只在本地存储用户名。

相关问题