C# 在Xamarin iOS中存储和检索用户凭据
我有一个Xamarin.iOS应用程序,需要用户登录才能查看内容。我有两个文本字段,一个是用户名,一个是密码。用户登录且API返回成功后。如何保存用户凭据,以便在用户启动应用程序时自动登录 我尝试了这个,但是,如果用户注销,我不知道如何检索值或重新保存凭据C# 在Xamarin iOS中存储和检索用户凭据,c#,ios,xamarin.ios,keychain,C#,Ios,Xamarin.ios,Keychain,我有一个Xamarin.iOS应用程序,需要用户登录才能查看内容。我有两个文本字段,一个是用户名,一个是密码。用户登录且API返回成功后。如何保存用户凭据,以便在用户启动应用程序时自动登录 我尝试了这个,但是,如果用户注销,我不知道如何检索值或重新保存凭据 void StoreKeysInKeychain(string key, string value) { var s = new SecRecord(SecKind.GenericPassword)
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);
}
谢谢。您可以安装此插件,所有工作都已为您完成:,nuget: 如果您使用该插件,它非常简单:
CrossSecureStorage.Current.SetValue("SessionToken", "1234567890");
var sessionToken = CrossSecureStorage.Current.GetValue ("SessionToken");
如果您不想使用它,请查看github repo,看看他们是如何在iOS上使用它的:
最好使用iOS默认NSUserDefaults.StandardUserDefaults来存储凭据 检查登录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 ();
}
}
可以另存为字符串数组或逗号分隔值。
让我知道任何进一步的帮助。
请参考:效果很好。根据你提供的xamarin网站,唯一的问题是苹果不再建议同步。我认为NSUserDefaults不安全(或者不如KeyChain安全)。如果这是真的,我会犹豫是否将密码存储在NSUserDefaults中的clear中。
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 ();
}
}