0
我已经使用Xamarin Studio创建了我的第一个Xamarin.Forms应用程序。我的应用程序不能记住默认的用户名,所以用户每次都必须登录应用程序,这是令人烦恼的。如果他/她没有从应用程序注销,我如何将最后一个用户凭证存储为自动登录? PCL有可能吗?在Xamarin表单中默认的用户实现自动登录
我已经使用Xamarin Studio创建了我的第一个Xamarin.Forms应用程序。我的应用程序不能记住默认的用户名,所以用户每次都必须登录应用程序,这是令人烦恼的。如果他/她没有从应用程序注销,我如何将最后一个用户凭证存储为自动登录? PCL有可能吗?在Xamarin表单中默认的用户实现自动登录
方法1:
使用SettingsPlugin存储用户凭据,你需要的。这将有助于在所有移动应用中访问来自PCL的设置。
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
//Setting Constants
const string UserName = "username";
private static readonly string UserNameDefault = string.Empty;
public static string UserName
{
get { return AppSettings.GetValueOrDefault<string>(UserName, UserNameDefault); }
set { AppSettings.AddOrUpdateValue<string>(UserName, value); }
}
const string Password = "password";
private static readonly string PasswordDefault = string.Empty;
public static string Password
{
get { return AppSettings.GetValueOrDefault<string>(Password, PasswordDefault); }
set { AppSettings.AddOrUpdateValue<string>(Password, value); }
}
}
对于自动登录创建空白页作为启动画面页。其设置为:
Application.Current.MainPage = new MySplashScreen();
在此页面的后台代码:
public partial class MySplashScreen : ContentPage
{
public MySplashScreen()
{
InitializeComponent();
CheckForAutoLogin();
}
private async void CheckForAutoLogin()
{
if (Settings.UserName != string.Empty && Settings.Password != string.Empty)
{
//Redirect to you desired page
}
else
{
//Redirect to login page.
}
}
}
所以在上面的实现,我创建了一个临时页面,闪屏只是为了检查的登录凭据并相应地重定向到期望的页面。
所以,如果你使用这个插件,那么不推荐使用字符串格式存储密码。为此,您需要使用任何加密/解密算法,然后使用Settings.Plugin存储加密的值。
方法2:
您可以使用Xamarin.Auth(跨平台SDK)。这是存储您的凭证的安全方式。它是一个用于验证用户和存储帐户的跨平台SDK。它可用于将Account
对象安全地存储在帐户存储中,以便应用程序不必总是重新验证用户身份。
感谢您的即时回复。我正在查。 – Dipak
@DipakAkhade强烈建议您**不要**使用设置插件来存储密码。在iOS和Android上,设置插件未加密。如果用户可以访问该文件,那么他们可以访问该密码。相反,您应该使用iOS上的KeyChain和Android上的KeyStore。您可以改用[Xamarin.Auth](https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/general/store-credentials/)或[XLabs Secure Storage](https:// github。 com/XLabs/Xamarin-Forms-Labs/blob/master/src/Platform/XLabs.Platform.Droid/Services/KeyVaultStorage.cs)也有其他。 – hvaughan3
hvaughan,绝对正确。在这种情况下,需要使用任何加密/解密技术。 –