使 AuthorizationHandler 接受两种资源而不是一种

make AuthorizationHandler accept two resources instead of one

我已经在 asp.net razorpages 中完成了本授权教程。

我有多个模型,很想允许 Adminhandler 访问所有模型。本教程的结构使用名为 AuthorizationHandler 的 C# 接口。

本质上它只接受一种资源。我不是 C# 的高手。所以我所做的是复制 AuthorizationHandler class 的代码来实现我自己的 class,它接受多个资源。

这是我目前所拥有的。我承认我不是工具箱中最锋利的钉子,现在被困在将什么编码到 HandleAsync 和 HandleRequirementAsync 主体中。 如果我的问题听起来很愚蠢,请原谅我,但我在创建自定义界面方面经验丰富。

使用System.Diagnostics; 使用 System.Threading.Tasks;

命名空间Microsoft.AspNetCore.Authorization {

public abstract class AuthorizationHandler<TRequirement, T1, T2> : IAuthorizationHandler where TRequirement : IAuthorizationRequirement
{
    protected AuthorizationHandler();

  
    [DebuggerStepThrough]
    public virtual Task HandleAsync(AuthorizationHandlerContext context);
    

    protected abstract Task HandleRequirementAsync(AuthorizationHandlerContext context, TRequirement requirement, T1 first, T2 second);
}

}

I have multiple models and would love to allow the Adminhandler to have access to all of the models. The tutorial is structured in a way which uses the C# interface called AuthorizationHandler.

这个已经在AuthorizationHandler中实现了,只需要实现HandleAsync方法,就可以得到你在AuthorizationHandlerContext.

中添加的所有需求
public Task HandleAsync(AuthorizationHandlerContext context)
{
    var requirements = context.PendingRequirements.ToList();

    return Task.CompletedTask;
}

更多详细信息,请参阅文档:Use a handler for multiple requirements