asp.net-core-mvc - .Net Core 对视图上显示的数据的授权
问题描述
我正在尝试将授权逻辑添加到我的.net 核心基于 Web 的应用程序中,以仅允许作者(作为用户名记录在每个数据库记录中)允许编辑/删除类型的操作,其他人只能阅读。
我做了一些谷歌搜索,似乎基于资源的授权可能适合我的要求: https ://docs.microsoft.com/en-us/aspnet/core/security/authorization/resourcebased?view=aspnetcore-2.1&tabs=aspnetcore2x
不确定我是否需要编写很多处理程序来实现本示例中所示的逻辑? https://docs.microsoft.com/en-us/aspnet/core/security/authorization/secure-data?view=aspnetcore-2.1
我的理解,逻辑是这样的:
If current login user == the created by user in database record
Display edit/delete link.
Allow access the edit/delete action method in Controller.
Else
Access is denied.
我应该遵循示例代码的方式还是编写自己的授权类?如果编写我自己的授权逻辑类更简单,我如何在控制器中将逻辑作为属性调用编辑/删除操作方法?
谢谢你。
解决方案
不确定我是否需要编写很多处理程序来实现本示例中所示的逻辑?
没有必要,您可以定义一个PermissionHandler
检查用户权限的HandleAsync
.
如何在控制器中将逻辑作为属性调用编辑/删除操作方法?
对于作为属性调用,您可以尝试
[Authorize(Policy = "Read")]
[HttpPost("delete")]
public IActionResult Delete([FromBody]Item item)
{
_itemService.Delete(item.Id);
return Ok();
}
如需完整演示,请尝试参考不同角色的不同 API 功能。
推荐阅读
- sql - 在 nvl 函数中使用 select 语句有什么问题吗?
- powershell - 用户输入作为命令行参数
- plugins - Netbeans 插件站点已关闭,导致 netbeans 无用
- dart - 为什么在没有实际调用 .iterator 的情况下返回迭代器?
- mysql - MYSQL:如何查找外键匹配的表数?
- c++ - 函数'c ++中数组元素的操作
- c# - 适用于 Windows 的 Unity 应用无法从 Firebase 存储中正确下载文件。(err msg : 接收数据失败)
- vuejs2 - 带有道具的vuejs嵌套插槽不下来
- gradient-descent - 我如何使用可视化绘制绿点?
- php - ACF update_field 不保存数据