【问题标题】:How to use resource and role based authorization on AspNet Core 3.1 with EF Core?如何在带有 EF Core 的 Asp Net Core 3.1 中使用基于资源和角色的授权?
【发布时间】:2020-07-31 14:23:11
【问题描述】:

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

如果卖家发送包含此类数据的 put 请求,它可以更新过滤器选项名称,但该操作应仅对其他路径/操作上的管理员可用。

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

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

【问题讨论】:

  • 请在标题上添加您的问题

标签: c# asp.net-core entity-framework-core role-base-authorization resource-based-authorization


【解决方案1】:

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

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

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

【讨论】:

  • 我正在使用操作上的 Authorize 属性进行角色检查。这样,我需要在方法内部进行另一个角色检查,这是我已经尝试过并且知道它有效的方法,这是我真正怀疑的地方,这是正确的还是最好的方法?
  • 我不确定这是否是最好的方法,但据我所知这是唯一的方法。
猜你喜欢
  • 1970-01-01
  • 2020-09-24
  • 2021-08-24
  • 2019-01-11
  • 2020-12-01
  • 2020-02-16
  • 2021-09-04
  • 2019-04-15
  • 2020-05-21
相关资源
最近更新 更多