如何使用 CloudKit 保留用户登录

How to retain user logins using CloudKit

我正在使用 CloudKit 制作一个简单的用户数据库。保留用户登录名的好方法是什么?意思是,一旦用户登录,他们就会保持登录状态。我使用 NSUserDefaults 来存储一个布尔值来跟踪他们是否登录,以及一个电子邮件字符串,这样你就可以知道他们登录的是哪个帐户;但是,这可能会导致容易出现虚假登录。有谁知道更好、更安全的方法来保留这些信息?

客户记录类型的当前结构:

我决定执行以下操作:

  1. 登录后在用户的钥匙串中设置电子邮件和密码。

    keychainWrapper.mySetObject(password, forKey: kSecValueData)
    keychainWrapper.mySetObject(email, forKey: kSecAttrAccount) 
    
  2. 打开应用程序时,使用存储在钥匙串中的信息重新运行登录过程。如果钥匙串是空的,将它们发送到注册页面。如果 email/password 在数据库中,请登录。如果 email/password 不在数据库中,请将它们发送到注册页面。

  3. 要注销,只需重置钥匙串的值即可。

    keychainWrapper.mySetObject("", forKey: kSecValueData)
    keychainWrapper.mySetObject("", forKey: kSecAttrAccount)