如何通过控制器将参数传递给策略中使用的授权处理程序

How can I pass a parameter to an authorization handler used in a policy, through a controller

我一直在寻找这个问题的答案,但似乎找不到直接的答案。我有一个在策略中使用的授权处理程序。典型例子如下:

services.AddAuthorization(options =>
    {
        options.AddPolicy("AtLeast21", policy =>
            policy.Requirements.Add(new MinimumAgeRequirement(21)));
    });

然后在控制器的授权属性中指定策略。我想要做的是在控制器级别指定年龄要求。例如:

[Authorize(Policy = "AtLeast21", 21)]

我的想法是我可以对多个控制器操作或多个策略使用相同的授权处理程序。

有人知道怎么做吗?

您可以自定义授权属性和授权策略提供程序以满足您的需要。

大家可以click on this link查看我之前写的详细例子