如何使用 CloudKit 保留用户登录
How to retain user logins using CloudKit
我正在使用 CloudKit
制作一个简单的用户数据库。保留用户登录名的好方法是什么?意思是,一旦用户登录,他们就会保持登录状态。我使用 NSUserDefaults
来存储一个布尔值来跟踪他们是否登录,以及一个电子邮件字符串,这样你就可以知道他们登录的是哪个帐户;但是,这可能会导致容易出现虚假登录。有谁知道更好、更安全的方法来保留这些信息?
客户记录类型的当前结构:
我决定执行以下操作:
登录后在用户的钥匙串中设置电子邮件和密码。
keychainWrapper.mySetObject(password, forKey: kSecValueData)
keychainWrapper.mySetObject(email, forKey: kSecAttrAccount)
打开应用程序时,使用存储在钥匙串中的信息重新运行登录过程。如果钥匙串是空的,将它们发送到注册页面。如果 email/password 在数据库中,请登录。如果 email/password 不在数据库中,请将它们发送到注册页面。
要注销,只需重置钥匙串的值即可。
keychainWrapper.mySetObject("", forKey: kSecValueData)
keychainWrapper.mySetObject("", forKey: kSecAttrAccount)
我正在使用 CloudKit
制作一个简单的用户数据库。保留用户登录名的好方法是什么?意思是,一旦用户登录,他们就会保持登录状态。我使用 NSUserDefaults
来存储一个布尔值来跟踪他们是否登录,以及一个电子邮件字符串,这样你就可以知道他们登录的是哪个帐户;但是,这可能会导致容易出现虚假登录。有谁知道更好、更安全的方法来保留这些信息?
客户记录类型的当前结构:
我决定执行以下操作:
登录后在用户的钥匙串中设置电子邮件和密码。
keychainWrapper.mySetObject(password, forKey: kSecValueData) keychainWrapper.mySetObject(email, forKey: kSecAttrAccount)
打开应用程序时,使用存储在钥匙串中的信息重新运行登录过程。如果钥匙串是空的,将它们发送到注册页面。如果 email/password 在数据库中,请登录。如果 email/password 不在数据库中,请将它们发送到注册页面。
要注销,只需重置钥匙串的值即可。
keychainWrapper.mySetObject("", forKey: kSecValueData) keychainWrapper.mySetObject("", forKey: kSecAttrAccount)