【问题标题】:Azure Cosmos DB - Access different data per user (SQL)Azure Cosmos DB - 每个用户访问不同的数据 (SQL)
【发布时间】:2020-01-27 09:06:21
【问题描述】:

我是 Web 开发的新手,所以这个问题可能是微不足道的。

我有一些物理设备,它们会将湿度(和其他东西)传输到 Azure Cosmos DB。我希望用户只能阅读他们的设备(通过网络应用程序中的图表)。所有设备最终都属于同一个集合。

我已经通过以下方式在 Azure 中建立了一个系统:

设备 -> Azure IoT-Hub -> Azure 函数 -> Azure Cosmos DB。

Web 应用程序使用 Azure B2C 让用户能够登录,但我如何将设备 ID“分配”给用户?我已经读过可以创建具有对某些分区键的特定访问权限的访问令牌,但是如何存储具有每个用户访问权限的信息?我需要一个新的数据库来仅存储这些信息吗?

一开始我必须手动授予权限。

一般信息:

  • Azure cosmos db 中的数据使用 device-id 作为分区键。
  • 用户可以拥有多个设备。
  • Web 应用正在运行 ASP.NET 核心(我是新来的)。
  • Web 应用程序需要登录才能访问。
  • 我在 Visual Studio 2019 中进行编码,并使用了具有内置授权的示例。

感谢您的帮助。

注意:可能要求太多,但一般解释和代码示例对我来说是完美的:)

更新: 我设法获取了登录用户的电子邮件:

@using System.Security.Claims;  // for using ClaimsIdentity

// Get user information
var userEmailAddress = ((ClaimsIdentity)User.Identity).FindFirst("emails").Value;

我最初的想法是建立一个数据库,其中包含:“电子邮件”和“可访问设备”。我想这必须是一个单独的数据库,因为我需要 cosmos db 中的生存时间参数。

【问题讨论】:

    标签: azure asp.net-core azure-cosmosdb


    【解决方案1】:

    您也许可以通过使用Resource Tokens 来实现您想要的。

    在文档中的这个示例中,您可以通过分区键分配权限:

    //Create a user.
    Database database = benchmark.client.GetDatabase("SalesDatabase");
    
    User user = await database.CreateUserAsync("User 1");
    
    // Create a permission on a container and specific partition key value
    Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
    user.CreatePermissionAsync(
        new PermissionProperties(
            id: "permissionUser1Orders",
            permissionMode: PermissionMode.All,
            container: benchmark.container,
            resourcePartitionKey: new PartitionKey("012345")));
    

    【讨论】:

    • 是的,我正在使用这种方法完成一个示例。但是我如何将它与 B2C 用户结合起来呢? :)
    • 抱歉,帮不了你
    【解决方案2】:

    好吧,我一直忙于其他项目,但我终于回到了这个问题。

    所以基本上我想要一个单独的数据库的原因是因为我需要 Azure Cosmos-DB 上的 TTL,并且我不想删除用户权限。

    事实证明,可以通过在文档本身中设置“ttl”字段来否决数据库的默认 TTL。从而可以排除文档被删除。

    所以基本的解决方案是: 创建一个将“ttl”参数设置为 -1 的文档以将其排除在删除之外。然后,此文档可以包含有关哪些用户可以访问什么的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-03
      • 2018-02-25
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多