c# - 如何在带有 EF Core 的 AspNet Core 3.1 上使用基于资源和角色的授权?
问题描述
我正在使用基于角色的授权开发市场后端应用程序,并且我正在使用这些角色处理对操作的访问。管理员管理所有产品及其过滤类别,而卖家则选择要出售的产品及其过滤选项和价格。顺便说一句,我对 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"
}
解决方案
您可以User.IsInRole("roleName")
在 Action 中使用来控制是否可以更改过滤器选项。例如:
public async Task<ActionResult>(ProductDetails p)
{
if(User.IsInRole("Administrator"))
{
//Update Filter Names
}
//do whatever else you need to...
}
推荐阅读
- elasticsearch - 如何使用 sentinl 插件在弹性搜索查询语法中获取单个值并运行条件检查以获取百分比
- php - PHP5 - 变量在输出时生成foreach问题
- c++ - fstream.open() 在应该 c++ 时不会失败
- javascript - 未处理的拒绝(TypeError):传播不可迭代实例的无效尝试
- python - 如何上传完整的目录 Django?
- rest - 也可以属于其他资源的资源的 REST API 设计最佳实践
- python - 我想使用 PRAW 为我的 reddit 帖子设置天赋,有人可以提出解决方案吗?
- php - PHP GET 参数
- ruby-on-rails - Rails 5:使用 gteq 进行选择的 select_tag 选项
- powerbi - 如何在 Power BI 桌面中创建切片器截至(最新)日期