在iOS应用程序中处理授权的更合适的方法是什么

时间:2014-11-23 11:00:22

标签: ios xcode cocoa-touch swift xcode6

我正在尝试创建一个需要在某些REST服务上进行授权的iOS应用程序。这种应用的结构更合适是什么?

我认为应该像SignInViewController一样使用相应的文本字段来输入用户名和密码,如果满足以下条件之一,我需要提供它:

  • 以前没有登录
  • 以前输入的用户凭据当前无效(当然,REST服务会返回此信息)

好的,第一个问题是 - 我应该在哪里放置检查显示此视图控制器的必要性的代码?在func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool函数?

接下来的问题是 - 我应该如何记住上次输入的用户凭据?我应该使用名为smth的密钥将其保存到iOS钥匙串,如“LastEnteredUserCredentials”吗?

然后,在这两种情况下,我应该将执行HTTP请求的代码放在REST服务中以进行用户授权(首次授权或使用保存的用户凭据授权)?

有没有做这种事情的优雅例子?

提前致谢。

1 个答案:

答案 0 :(得分:3)

  1. 我认为检查授权状态的最合适位置是applicationDidBecomeActive
  2. 如果您将所有凭据保存在钥匙串中会更好,因为它可能会共享所有用户设备之间的所有数据。
  3. 通过创建AuthorizationManager类来使用单一模式,该类包含所有相关代码并在auth时生成通知。状态改变了。将您的应用委托订阅到这些通知,并让它呈现适当的视图控制器。单身人士也可以观察UIApplicationDidBecomeActiveNotification通知(来自NotificationCenter),因此无需修改appDelegate的applicationDidBecomeActive方法