ios - 如何处理延迟登录?

标签 ios authentication modal-dialog

我不希望我的应用一启动就要求登录。相反,我想提示用户根据“需要”登录。因此,例如,如果用户与要求他登录的应用程序的一部分进行交互,则只有在那时才会出现登录提示。

我有几个问题:

1) 以前有没有人做过这种“惰性”登录,如果有,您的经历如何?难不难管理?这对用户来说是一种令人困惑的体验吗?

2) 实现它的最佳方法是什么?

我有一个提示用户登录的 LoginViewController。我想在当时可见的任何 View Controller 的 View 之上以模态方式显示此 View Controller 。

我还希望其他各种 View Controller 对 LoginViewController 一无所知,以最大限度地减少耦合。

理想情况下,我有一些 LoginManager 单例,它可以管理与登录有关的任何事情。

然后例如,如果一些随机 View Controller MyCoolViewController 需要用户身份验证某个功能,比如按下按钮,它可以调用:

- (void)buttonPressed:(id)sender {
    // If the user isn't logged in, show the login modal view on top of this VC
    if (![[LoginManager sharedManager] requireLoginWithViewController:self]) {
        return;
    }

    // Code that is protected by login
}

但是我需要一种方法来知道登录是否成功。这可以通过委托(delegate)或回调来解决,但意味着每个 View Controller 都知道一些我想避免的关于 LoginController 的信息。

另一种方法是创建 UIViewController 的 ProtectedViewController 子类,我的所有 View Controller 都将继承该子类,并提供访问 protected 功能的功能,并在需要时显示登录 Controller 。

您如何看待这些方法?还有什么更有意义的吗?我很想听听您关于“懒惰”登录的经验。

最佳答案

我已经通过以下方式实现了这种延迟日志记录方法(没有问题):

  1. 创建了一个带有注销、登录(用户名/密码)的设置 View ,它可以是一个通用的登录页面,也可以是一个 UIWebView。
  2. 应用程序将数据发送到服务器进行身份验证(在 JSON 消息中)。
  3. 成功登录:我将登录数据存储在钥匙串(keychain)中(使用单例模式,参见 this Apple sample codethis tutorial )
  4. 如果用户想要使用应用程序的敏感部分,我会请求存储的用户名的密码,并且能够注销并使用不同的帐户登录。该应用程序将输入的密码与存储的密码进行比较(离线模式)或将其发送到服务器(在线连接)。但它可以根据要求以不同的方式实现。

而且用户喜欢它!

祝你好运!

关于ios - 如何处理延迟登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958359/

相关文章:

删除 Main.storyboard 后 iOS 应用程序崩溃

iphone - iPad Split View加载奇怪

php - Android和PHP登录认证

c# - 使用嵌套母版页检查身份验证和授权的最佳方法是什么

javascript - querySelectorAll 函数的实时替代方案

javascript - 如何在asp.net MVC中创建确认框(模式弹出窗口)?

c++ - 为什么 min() 在 Xcode 中有效,而 max() 无效?

ios - Swift UITableView 自动高度

perl - 如何在使用 perl 脚本的用户需要 2 个密码的情况下自动进行 ssh 登录

twitter-bootstrap - Twitter bootstrap - 在已经打开的模式上打开模式