当我对用户进行身份验证时,我需要在设备的某个位置存储userId(主键),以便稍后可以使用它来提取与用户相关的其他信息,如“getAccounts(userId)”。
我在想我可以使用NSUserDefaults来存储userId吗?
有什么建议吗?
更新:我还需要提一下的是,userId是自动生成的,并且自动增加,如3,4,5,6,7等。
答案 0 :(得分:2)
NSUserDefaults是保存快速有用信息(如用户名或各种偏好)的最简单方法。
如果您要保存密码,则需要通过Keychain Services将其存储在钥匙串中。
答案 1 :(得分:2)
保持NSUSerDefault没关系 - 但你不应该将userId保留在那里。 有些人可以操纵该数据,更改userId并控制其他人帐户。
在用户授权后,请务必保留登录名+密码或生成一些令牌,以避免在用户丢失手机时保留可能被盗的完整凭据。
此外,您需要将API扩展为始终需要令牌(或登录,passowrd)用于每个操作 - 否则很容易入侵“getAccounts(userId)”等函数
对于密码,最佳将是其他建议的钥匙串,或至少在将其保存到NSUserDefaults之前加密。
当然,你在问题中提出的建议也适用 - 但这种做法确实很糟糕,而且这些应用都不应该以这种方式构建,所以请将我的答案视为良好的实践建议。