如何在带有 EF Core 的 Asp Net Core 3.1 中使用基于资源和角色的授权?

How to use resource and role based authorization on AspNet Core 3.1 with EF Core?

我正在使用基于角色的授权开发市场后端应用程序,并且我正在处理对使用这些角色的操作的访问。管理员管理所有产品及其过滤类别,而卖家选择要销售的产品及其过滤选项和价格。顺便说一句,我对 asp.net core 和 ef core 很陌生,如果这是一个简单的请求,请原谅我。

如果卖家发送包含此类数据的放置请求,它可以更新过滤器选项名称,但该操作应该仅对另一个 path/action 上的管理员可用。

除了为每个动作创建特定模型之外,是否有简单的好解决方案?当它是另一个资源的一部分时,比如阻止对该资源的更新访问?

{
  "productId": "1",
  "options": [
    {
      "filterCategoryId": "2",
      "filterOptionId": "4",
      "filterOptionName": "Blue"
    },
    {
      "filterCategoryId": "1",
      "filterOptionId": "1",
      "filterOptionName": "XL"
    }
  ],
  "price": "123.00",
  "amount": "5"
}

您可以在 Action 中使用 User.IsInRole("roleName") 来控制是否可以更改过滤器选项。例如:

public async Task<ActionResult>(ProductDetails p)
{
    if(User.IsInRole("Administrator"))
    {
         //Update Filter Names
    }

    //do whatever else you need to...
}