Xamarin Forms 中的默认用户实现自动登录

Default user implementation in Xamarin Forms to auto login

我已经使用 Xamarin Studio 创建了我的第一个 Xamarin.Forms 应用程序。我的应用程序无法记住默认用户名,因此用户每次都必须登录应用程序,这很烦人。如果 he/she 尚未从应用程序注销,我如何存储最后的用户凭据以自动登录? PCL可以吗?

方法一:

使用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.
       }
  }
}

所以在上面的实现中,我创建了一个临时页面作为初始屏幕,只是为了检查登录凭据并相应地重定向到所需的页面。

因此,如果您使用此插件,则不建议以字符串格式存储密码之类的值。为此,您需要使用任何 encryption/decryption 算法,然后使用 Settings.Plugin.

存储加密值

方法二:

您可以使用 Xamarin.Auth(跨平台 SDK)。这是存储您的凭据的安全方式。它是一个跨平台的 SDK,用于验证用户和存储他们的帐户。它可用于在帐户存储中安全地存储 Account 对象,这样应用程序就不必总是重新验证用户。