如何在 Xamarin Forms 中的 Azure 移动应用程序中处理用户令牌?

4
我正在开发一个使用.NET技术基于Azure Mobile App的Xamarin Forms应用程序。我遇到了一些客户端方面的问题,并且不确定应该如何处理用户令牌,即MobileServiceUser。应该如何存储令牌数据并在客户端应用程序中使用?
我已经成功地记录了用户信息。现在用户转到另一页并尝试检索信息。我为每个表/对象创建了像“TodoItemManager”的管理器。所以现在我正在使用FoodItemManager,但是MobileServiceClient的MobileServiceUser为空,因为我是使用LoginItemManager登录的用户,所以数据丢失了。我应该在整个应用程序中只使用一个管理器来保持MobileServiceUser的活跃状态吗? 什么是最好的方法? 非常感谢。

1
你可以将你的管理类设计为单例模式(或静态,但我建议使用第一种方式)。这样,你就可以在整个程序中访问它。 - Tom Wuyts
2个回答

6

特别地,请将您的MobileServiceClient设为Singleton! - Adrian Hall
谢谢你的回答。我将只使用一个MobileServiceClient对象。为了简单起见,我决定将其添加到App类中。这样就容易访问它了。 - Ángel Javier Mena Espinosa

1

根据您想要实现的目标,有不同的方法和最佳实践。如果用户每次启动应用程序都需要重新进行身份验证,则可以创建一个包含身份验证属性的singleton类。我选择了“AzureData”作为名称,因为它与您的主题相关。

示例:

using 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类的位置访问内容。
如果您想以一种方式存储数据以便在应用程序重新启动时保留,您需要考虑其他存储数据的方法。根据数据的大小,可以使用每个平台提供的本地存储(例如 iOS的NSUserDefaults),或者创建文件或使用本地数据库

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接