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