我有一个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);
}
感谢。
答案 0 :(得分:1)
您可以安装此插件,并且已完成所有工作: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);
}
答案 1 :(得分:-2)
最好使用iOS默认NSUserDefaults.StandardUserDefaults来存储您的凭据。
检查Login ViewController中的存储值,如果它不存在则在成功登录后将用户名和密码设置为" GetStoredCredentials"否则获取已保存的凭据并使用。
http://blahblahbla.cloudfront.net/lebron.jpg
您可以保存为字符串数组或逗号分隔值。 如有任何进一步的帮助,请通知我。 您的参考:https://developer.xamarin.com/guides/ios/application_fundamentals/user-defaults/