【问题标题】:Adding an AuthorizationHandler via config通过配置添加 AuthorizationHandler
【发布时间】:2018-02-01 03:24:52
【问题描述】:

在 WCF 中,您可以通过 web.config 在服务行为中使用serviceAuthorization 节点添加授权策略。有没有办法通过配置在 .NET Core WebAPI 中包含AuthorizationHandler

为了清楚起见,我正在尝试用 web.config 中的内容替换 Startup.cs 中的这一行:

services.AddSingleton<IAuthorizationHandler, MyAuthorizationHandler>();

【问题讨论】:

  • 我的第一个问题是你为什么认为你需要这样做。我要求澄清一下,这不是XY problem,因为从当前状态下帖子的有限细节来看,没有太多可以使用的上下文。
  • @Nkosi:我正在努力创建一个授权组件,该组件可以放入我们组织中的多个服务中。能够在配置中这样做(并能够从配置中删除它)是一种理想的行为,因为这就是我们当前的 WCF 工作方式。
  • 有道理。现在我脑海中的想法是更新设置 json 文件中的配置,但需要一些自定义代码才能使用该配置,并且必须停止并重新启动主机,但不能重新编译。
  • @Nkosi:没办法在设置 IIS 绑定的 web.config 中做到这一点?
  • 是的。这就是要走的路。但就像我之前说的。 startup 是您的入口点,但您可以在 json 文件中进行一些设置,并让您的代码基于此添加配置。我的想法是,每次你想添加东西时都不必重新编译。

标签: web-config authorization asp.net-core-webapi


【解决方案1】:

web.config 仅用于 IIS 特定配置。由于 .net-core 的跨平台特性,他们放弃了与 Web 配置的耦合以进行应用程序配置。

在 IIS 或 IIS Express 中托管应用程序时需要 web.config 文件。 web.config 中的设置使 ASP.NET Core 模块能够启动应用程序并配置其他 IIS 设置和模块。

参考Configure an ASP.NET Core App: The web.config file

Startup 是您进入应用程序的入口点,您可以在 json 文件中进行一些设置,并让您的代码在此基础上添加/更新配置。

我的想法是,因为配置选项允许您在 Reload configuration data with IOptionsSnapshot
需要 ASP.NET Core 1.1 或更高版本。 p>

IOptionsSnapshot 支持以最小的处理开销重新加载选项。在 ASP.NET Core 1.1 中,IOptionsSnapshotIOptionsMonitor&lt;TOptions&gt; 的快照,并且只要监视器根据数据源的更改触发更改,就会自动更新。在 ASP.NET Core 2.0 及更高版本中,当在请求的生命周期内访问和缓存选项时,每个请求都会计算一次选项。

您的授权处理程序将取决于选项并根据提供的配置执行其功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多