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

Posted

技术标签:

【中文标题】如何通过控制器将参数传递给策略中使用的授权处理程序【英文标题】:How can I pass a parameter to an authorization handler used in a policy, through a controller 【发布时间】:2021-06-17 18:33:52 【问题描述】:

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

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

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

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

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

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

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

您可以click on this link查看我之前写的详细示例。

【讨论】:

谢谢。我已经阅读了这些内容,但我真的希望有一种简单的方法可以仅使用授权处理程序来完成。似乎在这一点上,使用自定义操作过滤器完成同样的工作会更容易。

以上是关于如何通过控制器将参数传递给策略中使用的授权处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义参数传递给事件处理程序

如何将参数传递给我的处理程序

如何通过 URL 将参数传递给闪亮的应用程序

如何将参数传递给 Core Data 生命周期方法?

如何将枚举作为字符串参数传递给 Authorize 属性?

控制台应用程序参数,如何将参数传递给 Main 方法