iOS版:如何登录(自动登录)后,对用户进行认证?(iOS: How to authenticate

2019-07-29 03:00发布

我想使用自动登录功能。 因此,当用户打开应用程序,他被授予了“登录屏幕”。 当他登录成功,他应该被引导到他的账户。 我把这称为“帐户屏幕”。 现在,当用户重新启动应用程序,他应该直接得到针对他的帐户,没有看到“登录屏幕”。

登录功能已经工作在我的项目(用户名和密码保存在UserDefault)的罚款,但我每次关闭应用程序的时候,我需要再次登录。 所以我的问题是:如何自动登录用户? 或者更好的说:我如何检查数据(保存在UserDefault)是一样的,在数据​​库(MySQL的)?

Answer 1:

  1. 第一次当用户登录,您节省iPhone的钥匙串的用户凭据。
  2. 当应用程序被再次打开,你检查用户凭证是否存在于钥匙圈,如果是,你的代码应该调用登录逻辑并做自动登录,并转到屏幕登录屏幕后。 如果没有,那么你就应该显示登录界面。 你可以做AppDelegates的applicationDidFinishLaunching这个逻辑。
  3. 每当用户点击退出按钮,可以先解除钥匙扣用户凭据,并返回到登录控制器。

只要你添加的登录凭据,以在用户登录时在钥匙串中只有一次用户点击退出按钮将其删除。 如果用户退出应用程序,而不注销,则凭证仍然会在钥匙串,当用户返回到应用程序,你可以检索它们。

编辑:我想我一定多加一个thing..If登录逻辑需要一定的时间(如你登录使用web请求或东西),把登录逻辑代码在你登录的ViewController而不是ApplicationDelegate,并自动登录过程中使用的任何活动指示灯处理。

编辑 :我编辑了完整的答案,钥匙扣取代NSUserDefault。 此线程解释了为什么。



Answer 2:

同时节省用户名和密码,强烈建议在钥匙串中保存,而不是NSUserDefaults的。 请参阅此职位为更好的理解。



Answer 3:

要回答的问题是:如果你想自动登录与钥匙串数据,使用免费的框架“SFHFKeychainUtils”。 它节省了用户名,密码和服务名在钥匙串。 如果你想找回它,只是在保存NSUserDefaults的用户名,你可以得到轻松的密码。

开始了:

高保真框架SIFI: https://github.com/ldandersen/scifihifi-iphone/tree/master/security

SIFI音响框架(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



Answer 4:

我NSUserDefaults的使用和SSKeychain的组合。 我曾经向NSUserDefaults的存储用户名NAD SSKeychain存储密码。

这是我用来保存凭据的代码

NSString *user = self.username.text;
NSString *password = self.pass.text;
[SSKeychain setPassword:password forService:@"achat" account:user];
NSUserDefaults *dUser = [NSUserDefaults standardUserDefaults];
[dUser setObject:user forKey:@"user"];
[dUser synchronize];

这是我用来检索凭证的代码

NSUserDefaults *eUser = [NSUserDefaults standardUserDefaults];
NSString *savedUser = [eUser objectForKey:@"user"];

    if (!savedUser) {
        UIAlertView *uhoh = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"Please enter your username and password." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil, nil];
        [uhoh show];
    }

    else {
            NSString *savedPass = [SSKeychain passwordForService:@"achat" account:savedUser];
            self.username.text = savedUser;
            self.pass.text = savedPass;
         }


文章来源: iOS: How to authenticate a user after login (for auto login)?