.Net Core授权显示在视图上的数据

时间:2018-11-12 13:43:14

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

我正在尝试向我的.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.

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

谢谢。

1 个答案:

答案 0 :(得分:0)

  

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

不需要,您可以定义一个PermissionHandler来检查HandleAsync中的用户权限。

  

我该如何在控制器中的edit / delete action方法上方将逻辑作为属性调用?

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

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

有关完整的演示,请尝试参考Different API functionality for different roles