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

Dip*_*pak 0 c# autologin xamarin.forms

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

Him*_*edi 5

方法一:

使用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); }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于自动登录,创建一个空白页面作为启动画面页面。将其设置为:

Application.Current.MainPage = new MySplashScreen();
Run Code Online (Sandbox Code Playgroud)

在此页面的后面代码中:

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.
       }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

方法二:

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