首页 > 解决方案 > .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.

我应该遵循示例代码的方式还是编写自己的授权类?如果编写我自己的授权逻辑类更简单,我如何在控制器中将逻辑作为属性调用编辑/删除操作方法?

谢谢你。

标签: asp.net-core-mvc.net-core-authorization

解决方案


不确定我是否需要编写很多处理程序来实现本示例中所示的逻辑?

没有必要,您可以定义一个PermissionHandler检查用户权限的HandleAsync.

如何在控制器中将逻辑作为属性调用编辑/删除操作方法?

对于作为属性调用,您可以尝试

[Authorize(Policy = "Read")]
[HttpPost("delete")]
public IActionResult Delete([FromBody]Item item)
{
  _itemService.Delete(item.Id);
  return Ok();
}

如需完整演示,请尝试参考不同角色的不同 API 功能


推荐阅读