我想使用自动登录功能。因此,当用户打开应用程序时,他会被委托到“登录屏幕”。当他成功登录后,他应该被定向到他的帐户。我称之为“帐户屏幕”。现在,当用户重新启动应用程序时,他应该直接进入他的帐户,而不会看到“登录屏幕”。
登录功能在我的项目中已经可以正常工作(用户名和密码保存在UserDefault中),但是每次我关闭应用程序时,我都必须重新登录。所以我的问题是:如何自动登录用户?或者更好地说:如何检查数据(保存在 UserDefault 中)是否与数据库(MYSQL)中的相同?
- 用户第一次登录时,您保存用户
iPhone 钥匙串中的凭证。
- 当应用程序再次打开时,您检查用户凭据是否已
存在于钥匙串中,如果是,您的代码应该调用登录
逻辑并执行自动登录并在登录屏幕后转到屏幕。如果不,
那么你应该显示登录屏幕。您可以在 AppDelegates applicationDidFinishLaunching 中执行此逻辑。
- 每当用户单击注销按钮时,都会从其中删除用户凭据
首先是钥匙串,然后返回登录控制器。
只需在用户登录时将登录凭据添加到钥匙串,并且仅在用户单击注销按钮后将其删除。如果用户在没有注销的情况下退出应用程序,则凭据仍将位于钥匙串中,并且您可以在用户返回应用程序时检索它们。
EDIT:我想我必须再添加一件事..如果您的登录逻辑需要时间(例如您使用网络请求或其他方式登录),请将登录逻辑代码放在您的登录ViewController而不是ApplicationDelegate中,并在自动登录过程中使用任何活动指示器。
EDIT:我编辑了整个答案,用 Keychain 替换了 NSUserDefault。This http://software-security.sans.org/blog/2011/01/05/using-keychain-to-store-passwords-ios-iphone-ipad/线程解释了原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)