iOS:登录后如何验证用户(自动登录)?

fil*_*lou 10 iphone xcode autologin ios

我想使用自动登录功能.因此,当用户打开应用程序时,他将被委派给"登录屏幕".当他成功登录时,他应该被引导到他的帐户.我称之为"帐户屏幕".现在,当用户重新启动应用程序时,他应该直接转到他的帐户,而不会看到"登录屏幕".

登录功能在我的项目中已经正常工作(用户名和密码保存在UserDefault中),但每次关闭应用程序时,我都必须再次登录.所以我的问题是:如何自动登录用户?或者更好地说:我如何检查数据(保存在UserDefault中)是否与数据库(MYSQL)中的数据相同?

Kri*_*dra 23

  1. 用户首次登录时,将用户凭据保存在iPhone的钥匙串中.
  2. 当应用程序再次打开时,您检查钥匙串中是否存在用户凭据,如果是,则代码应调用登录逻辑并执行自动登录并在登录屏幕后转到屏幕.如果不是,那么您应该显示登录屏幕.您可以在AppDelegates applicationDidFinishLaunching中执行此逻辑.
  3. 每当用户单击注销按钮时,首先从钥匙串中删除用户凭据,然后返回登录控制器.

只需在用户登录时将登录凭据添加到钥匙串,并在用户单击退出按钮后将其删除.如果用户在没有注销的情况下退出应用程序,则凭据仍将保留在钥匙串中,您可以在用户返回应用程序时检索它们.

编辑: 我想我必须添加一件事......如果您的登录逻辑需要时间(就像您使用Web请求或其他东西登录),请将登录逻辑代码放入Login ViewController而不是ApplicationDelegate,并在自动登录期间使用任何活动指示器处理.

编辑:我编辑了整个答案,用钥匙串取代了NSUserDefault.这个帖子解释了原因.


fil*_*lou 0

回答这个问题:如果您想使用钥匙串数据自动登录,请使用免费框架“SFHFKeychainUtils”。它将用户名、密码和服务名保存在钥匙串中。如果你想找回它,只需将用户名保存在 NSUserDefaults 中,你就可以轻松获取密码。

开始了:

SiFi HiFi 框架: https://github.com/ldandersen/scifihifi-iphone/tree/master/security

SiFi Hifi 框架(兼容 ARC): https: //stackoverflow.com/a/10348964/1011125

如何使用 SFHFKeychainUtils: http://gorgando.com/blog/technology/iphone_development/simple-iphone-tutorial-password-management-using-the-keychain-by-using-sfhfkeychainutils