在Xamarin iOS中存储和检索用户凭据

我有一个Xamarin.iOS应用程序,要求用户登录才能查看内容。 我有两个文本字段,一个用于用户名,另一个用于密码。 用户登录后,API已成功返回。 如何保存用户凭据,以便在他们启动应用时自动登录?

我试过这个,但是,如果用户注销,我不知道如何检索值或重新保存凭据

void StoreKeysInKeychain(string key, string value) { var s = new SecRecord(SecKind.GenericPassword) { ValueData = NSData.FromString(value), Generic = NSData.FromString(key) }; var err = SecKeyChain.Add(s); } 

谢谢。

最好使用iOS默认NSUserDefaults.StandardUserDefaults来存储您的凭据。

在Login ViewController中检查存储的值,如果它不存在则在成功登录后将用户名和密码设置为“GetStoredCredentials”,否则获取保存的凭据并使用。

 public String GetStoredCredentials { get { string value = NSUserDefaults.StandardUserDefaults.StringForKey("Key"); if (value == null) return ""; else return value; } set { NSUserDefaults.StandardUserDefaults.SetString(value.ToString (), "Key"); NSUserDefaults.StandardUserDefaults.Synchronize (); } } 

您可以保存为字符串数组或逗号分隔值。 如有任何进一步的帮助,请通知我。 您的参考: https : //developer.xamarin.com/guides/ios/application_fundamentals/user-defaults/

您可以安装此插件,所有工作都已完成: https ://github.com/sameerkapps/SecureStorage,nuget: https ://www.nuget.org/packages/sameerIOTApps.Plugin.SecureStorage/。

如果您使用插件,它就像下面这样简单:

 CrossSecureStorage.Current.SetValue("SessionToken", "1234567890"); var sessionToken = CrossSecureStorage.Current.GetValue ("SessionToken"); 

如果您不想使用它,那么请查看github repo,看看他们是如何为iOS做的: https : //github.com/sameerkapps/SecureStorage/blob/master/SecureStorage/Plugin.SecureStorage.iOSUnified/SecureStorageImplementation。 CS

 public override string GetValue(string key, string defaultValue) { SecStatusCode ssc; var found = GetRecord(key, out ssc); if (ssc == SecStatusCode.Success) { return found.ValueData.ToString(); } return defaultValue; } private SecRecord GetRecord(string key, out SecStatusCode ssc) { var sr = new SecRecord(SecKind.GenericPassword); sr.Account = key; return SecKeyChain.QueryAsRecord(sr, out ssc); } 
Interesting Posts