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

And*_*sey 3 policy authorization asp.net-core

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

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

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

[Authorize(Policy = "AtLeast21", 21)]
Run Code Online (Sandbox Code Playgroud)

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

有谁知道如何做到这一点?

小智 5

您可以自定义授权属性和授权策略提供者来满足您的需求。

您可以点击此链接查看我之前写的详细示例。