如何在带有 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...
}
我正在使用基于角色的授权开发市场后端应用程序,并且我正在处理对使用这些角色的操作的访问。管理员管理所有产品及其过滤类别,而卖家选择要销售的产品及其过滤选项和价格。顺便说一句,我对 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...
}