小编Joe*_*ett的帖子

在 ASP.NET Core/Entity Framework Core 3.1 中的列表上使用基于资源的授权

前提

在 ASP.Net Core 中应用基于资源的授权的记录方法是注册一个AuthorizationHandler,定义每个,然后使用注入的方法OperationAuthorizationRequirement检查对资源的访问。(参考文档)AuthorizeAsync()IAuthorizationHandler

这对于检查单个记录的操作来说非常好,但我的问题是如何最好地同时对许多资源进行授权(例如,检查索引页的记录列表的读取权限)?

例子

假设我们有一个订单列表,并且我们希望向用户提供他们已创建的订单列表。为了按照微软文档定义的做法来做到这一点,我们首先创建一些静态OperationAuthorizationRequirement对象:

public static class CrudOperations
{
    public static OperationAuthorizationRequirement Create =
        new OperationAuthorizationRequirement { Name = nameof(Create) };
    public static OperationAuthorizationRequirement Read =
        new OperationAuthorizationRequirement { Name = nameof(Read) };
    public static OperationAuthorizationRequirement Update =
        new OperationAuthorizationRequirement { Name = nameof(Update) };
    public static OperationAuthorizationRequirement Delete =
        new OperationAuthorizationRequirement { Name = nameof(Delete) };
}
Run Code Online (Sandbox Code Playgroud)

..然后创建我们的 AuthorizationHandler:

public class OrderCreatorAuthorizationHandler :
    AuthorizationHandler<OperationAuthorizationRequirement, Order>
{ …
Run Code Online (Sandbox Code Playgroud)

c# authorization entity-framework-core asp.net-core

10
推荐指数
1
解决办法
1088
查看次数