2016-10-10 51 views
0

我已经使用Xamarin Studio创建了我的第一个Xamarin.Forms应用程序。我的应用程序不能记住默认的用户名,所以用户每次都必须登录应用程序,这是令人烦恼的。如果他/她没有从应用程序注销,我如何将最后一个用户凭证存储为自动登录? PCL有可能吗?在Xamarin表单中默认的用户实现自动登录

回答

2

方法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对象安全地存储在帐户存储中,以便应用程序不必总是重新验证用户身份。

+0

感谢您的即时回复。我正在查。 – Dipak

+0

@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

+0

hvaughan,绝对正确。在这种情况下,需要使用任何加密/解密技术。 –