【问题标题】:How To Create Policy in Controller Not in IdentityHostingStartup如何在不在 IdentityHostingStartup 的控制器中创建策略
【发布时间】:2019-12-04 17:17:55
【问题描述】:

我想在我的控制器中创建策略,而不是在 "IdentityHostingStartup" 中。有没有办法在行动中创建政策?只想在我的管理面板中创建一些策略

轻松启动:

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

有什么建议吗? :)

【问题讨论】:

    标签: c# asp.net identity roles policy


    【解决方案1】:

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

    实际上,存在这样的东西并且它是开源的。 IdentityServer 的创建者想出了PolicyServer

    商业版有一个管理面板并允许进行高级配置。虽然免费的开源版本是有限的。但它基本上可以满足您的需求:在每个请求上注入策略。

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

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

    【讨论】:

    • 谢谢,但这是唯一的方法吗?
    • 如果你想使用这些策略,那么你必须在管道的早期注入它们。这就是中间件的作用。授权应该在调用控制器之前进行,除非使用命令式授权,这可以在控制器中进行。或者这不是你的意思?
    • 不是真的,我知道如何在控制器之前使用策略,我只是想知道,如何在控制器中创建策略,就像我们在 IdentityHostingStartup 中创建策略的方式一样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2014-07-03
    • 2015-05-10
    相关资源
    最近更新 更多