2016-07-15 23 views
3

我正在爲Azure移動應用程序使用.NET背景的Xamarin Forms應用程序。我遇到了一些與客戶有關的問題,我想知道應該如何處理用戶令牌MobileServiceUser。如何在Azure移動應用程序中處理用於Xamarin Forms的用戶令牌?

我應該如何保存令牌的數據並通過客戶端應用程序使用它?

我成功登錄了用戶。現在用戶轉到另一頁面並嘗試檢索信息。我爲每個表/對象創建了一個像「TodoItemManager」這樣的管理器。因此,現在我使用FoodItemManager,但MobileServiceClient的MobileServiceUser爲空,因爲我使用LoginItemManager登錄了用戶。所以數據丟失了。我應該使用一個管理器來完成應用程序,以保持MobileServiceUser的活力?什麼是最好的方法?

非常感謝。

+1

你可以讓你的經理類成爲單身人士(或靜態的,但我建議第一個)。這樣,您可以在整個程序中訪問它。 –

回答

5

您應該使用一個單身人士MobileServiceClient對象爲您的整個應用程序,這將保留登錄的用戶跨所有視圖。創建多個客戶端對象通常是一個糟糕的主意。

如果您還希望跨應用程序重新啓動持久保存用戶令牌,則可以使用Xamarin.Auth庫,該庫將安全地存儲令牌。以下是Xamarin.Forms的示例:https://github.com/azure-appservice-samples/ContosoMoments/blob/master/src/Mobile/ContosoMoments/Helpers/AuthStore.cs

+0

特別是讓您的MobileServiceClient成爲單身! –

+0

謝謝你的回答。我只會使用一個MobileServiceClient對象。我決定將它簡單地添加到App類中。這樣就很容易訪問它。 – ajmena

0

取決於您想實現的目標,存在不同的方法和最佳實踐。如果用戶每次應用程序啓動時都要重新進行身份驗證,則可以創建一個singleton class,該持有身份驗證屬性。因爲你的話題,我選擇了「AzureData」這個名字。

例如:

使用系統;

public class AzureData 
{ 
    private static AzureDatainstance; 

    private AzureData() {} 

    public static AzureDataInstance 
    { 
     get 
     { 
     if (instance == null) 
     { 
      instance = new AzureData(); 
     } 
     return instance; 
     } 
    } 

    public string MobileServiceUser { get; set; } 

} 

現在在你的代碼,你確定MobileServiceUser您進行通話這樣的:

AzureData.AzureDatainstance.MobileServiceUser = <yourUser>; 

然後你可以在有知名度的類AzureData應用程序的每個位置訪問內容。

如果您想要以重新啓動應用程序的方式存儲數據,則需要考慮其他方式來存儲數據。根據數據的大小,可以使用每個平臺提供的本地存儲(例如 NSUserDefaults for iOS),或者創建文件或使用local database

相關問題