首页 > 解决方案 > 在 ASP.NET Core 3 中实现细粒度权限

问题描述

我想为我的新 ASP.NET Core 3 应用程序提供细粒度的权限。应用程序中会有很多区域(一开始有几个,但每个新功能都会与另一个区域一起控制访问),我怀疑迟早我需要精确的访问控制(例如,这个用户应该可以访问EmployeePLUS 区域 X、Y RW 和区域 Z RO)。

自己实现这样的机制很容易,但我想使用 ASP 的内置机制,而不是从头开始编写所有内容。因此,根据我对 ASP.NET Core 授权机制的了解,我将采用以下方式:

老实说,这对我来说似乎有点过度设计,因为我可以实现自己的授权属性,对于初学者来说,这将简化输入限制(也就是说,访问定义中的错误将在编译期间被捕获,而不是在应用程序运行期间):

[RestrictAccess(Areas.Area1, AreaAccess.Read)]
public IActionResult MyAction() { }

但是,这似乎是一种解决方案,它规避了使用 ASP.NET Core 机制,因为我之前介绍的似乎是微软希望我们使用策略的方式(请参阅自定义授权策略

TL;DR:在 ASP.Net Core 3 中实现这种细粒度权限的正确方法是什么?此外,按照微软建议的方式实现权限的实际优势是什么?

标签: c#asp.netasp.net-coreauthorization

解决方案


推荐阅读