Azure Cosmos DB-每个用户访问不同的数据(SQL)
我是网络开发新手,所以这个问题可能很简单 我有一些物理设备,可以将湿度(和其他东西)传输到Azure Cosmos DB。我希望用户只能阅读他们的设备(通过web应用程序中的图表)。所有设备都以相同的集合结束 我已通过以下方式在Azure中设置了一个系统: 设备->Azure物联网中心->Azure功能->Azure宇宙数据库 web应用程序使用Azure B2C让用户能够登录,但我如何“分配”设备id给用户?我已经读到,可以创建对某些分区密钥具有特定访问权限的访问令牌,但是如何存储具有每个用户访问权限的信息?我是否只需要一个新的数据库来存储这些信息 在开始时,如果我必须手动授予权限,这是很好的 一般信息:Azure Cosmos DB-每个用户访问不同的数据(SQL),azure,asp.net-core,azure-cosmosdb,Azure,Asp.net Core,Azure Cosmosdb,我是网络开发新手,所以这个问题可能很简单 我有一些物理设备,可以将湿度(和其他东西)传输到Azure Cosmos DB。我希望用户只能阅读他们的设备(通过web应用程序中的图表)。所有设备都以相同的集合结束 我已通过以下方式在Azure中设置了一个系统: 设备->Azure物联网中心->Azure功能->Azure宇宙数据库 web应用程序使用Azure B2C让用户能够登录,但我如何“分配”设备id给用户?我已经读到,可以创建对某些分区密钥具有特定访问权限的访问令牌,但是如何存储具有每个用户
- Azure cosmos db中的数据使用设备id作为分区密钥
- 用户可以有多个设备
- 该web应用程序正在运行ASP.NET核心(我是新来的)
- web应用程序需要登录才能访问李>
- 我在VisualStudio2019中编写代码,并使用了具有内置授权的示例
@using System.Security.Claims; // for using ClaimsIdentity
// Get user information
var userEmailAddress = ((ClaimsIdentity)User.Identity).FindFirst("emails").Value;
我最初的想法是建立一个包含“电子邮件”和“可访问设备”的数据库。我想这必须是一个单独的数据库,因为我需要cosmosdb中的Time-to-Live参数 通过使用,您可能能够实现您想要的目标 与文档中的此示例一样,您可以通过分区键分配权限:
//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")));
好吧,我一直忙于其他项目,但我终于回到了这个问题上 因此,基本上我想要一个单独的数据库的原因是因为我需要Azure Cosmos DB上的TTL,并且我不想删除用户权限 事实证明,通过在文档本身中设置“TTL”字段,可以推翻数据库的默认TTL。因此,可以排除被删除的文档 因此,基本解决方案是:
创建“ttl”参数设置为-1的文档,以将其从删除中排除。然后,此文档可以包含有关哪些用户可以访问哪些内容的信息 是的,我正在使用此方法完成一个示例。但我如何将其与B2C用户结合呢?:)对不起,我帮不了你