C# 如何在控制器中创建不在IdentityHostingStartup中的策略

C# 如何在控制器中创建不在IdentityHostingStartup中的策略,c#,asp.net,identity,roles,C#,Asp.net,Identity,Roles,我希望在控制器中而不是在“IdentityHostingStartup”中创建策略。有没有办法在操作中创建策略?只是想在我的管理面板中创建一些策略 轻松启动: services.AddAuthorization(x => { x.AddPolicy("PolicyAdmin", p => p.RequireRole("Admins")); x.AddPolicy("PolicyCustome

我希望在控制器中而不是在“IdentityHostingStartup”中创建策略。有没有办法在操作中创建策略?只是想在我的管理面板中创建一些策略

轻松启动:

   services.AddAuthorization(x =>
            {
                x.AddPolicy("PolicyAdmin", p => p.RequireRole("Admins"));
                x.AddPolicy("PolicyCustomers", p => p.RequireRole("Customers"));
            });

有什么建议吗?:)

如果我理解正确,您需要配置策略并以某种方式将它们注入程序中

事实上,类似的东西是存在的,而且是开源的。IdentityServer的创建者提出了一个新的解决方案

商业版有一个管理面板,允许高级配置。而免费的开源版本是有限的。但它基本上实现了您想要的功能:在每个请求上注入策略

代码做了两件事:在不存在的策略上显示错误消息(因为这些消息可能在程序启动后被注入),并通过中间件将策略作为具有值的权限注入


请看一下源代码。这可能是一个很好的起点。OSS版本从json文件中读取信息,但您可以轻松地将其替换为另一个源,例如数据库。

谢谢,但这是唯一的方法?如果您想使用策略,那么您必须在管道的早期注入它们。中间件就是这样做的。授权应该在调用控制器之前进行,除非使用命令式授权,该授权可以在控制器中进行。或者这不是你的意思吗?不是真的,我知道如何在控制器之前使用策略,我只是想知道,如何在控制器中创建策略,就像我们在IdentityHostingStartup中创建策略一样