我正在为Azure移动应用程序开发具有.NET背景的Xamarin Forms应用程序。我在客户端遇到了一些问题,我想知道如何处理用户令牌,MobileServiceUser。
我应该如何保留令牌的数据并通过客户端应用程序使用它?
我成功登录了用户。现在,用户移动到另一个页面并尝试检索信息。我创建了一个像" TodoItemManager"对于每个表/对象。所以现在我使用FoodItemManager,但MobileServiceClient的MobileServiceUser为null,因为我使用LoginItemManager记录了用户。所以数据丢失了。我应该为完整的应用程序使用一个管理器来保持MobileServiceUser活着吗?什么是最好的方法?
非常感谢。
答案 0 :(得分:6)
您应该为整个应用使用单身 MobileServiceClient
对象,这将保留所有视图中的登录用户。创建多个客户端对象通常是个坏主意。
如果您还希望在应用程序重新启动时保留用户令牌,则可以使用Xamarin.Auth
库,该库将安全地存储令牌。以下是Xamarin.Forms的示例:https://github.com/azure-appservice-samples/ContosoMoments/blob/master/src/Mobile/ContosoMoments/Helpers/AuthStore.cs。
答案 1 :(得分:1)
根据您想要实现的目标,有不同的方法和最佳实践。如果用户每次启动应用程序时都应重新进行身份验证,则可以创建一个singleton class来保存身份验证属性。我选择了名称" AzureData"因为你的主题。
示例:
使用System;
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。