我有一棵树,它位于一个名为cartable的表中。我想使用 .net 核心标识向此树授予一些权限,如下所示:
- 每个角色都有一些权限,例如"阅读信件","创建信件","删除信件"等
- 每个用户在可卡表节点上都可以有一个角色具体日期,即从06/01/2019到05/10/2020
你能帮我如何实施它吗?我应该使用声明还是必须自定义 .net 标识的用户角色表
谢谢
您可以使用
基于策略的授权,而不是直接基于角色的权限
您可以在启动时为每个权限定义一个策略。每个策略都需要一个角色,因此您仍将使用角色。每个策略还可以要求声明,其中保留每个用户的日期,并且策略规则可以验证声明中的日期是否超出范围。
在与您的节点对应的控制器操作中,您可以使用 Authorize 属性装饰操作方法,并指定策略名称,如链接文档中所示。
[Authorize(Policy = "AtLeast21")]
public class AlcoholPurchaseController : Controller
{
public IActionResult Login() => View();
public IActionResult Logout() => View();
}