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,絕對正確。在這種情況下,需要使用任何加密/解密技術。 –