在运行时将新的中间件注册到OWIN管道而无需重启应用程序

时间:2016-03-08 11:24:19

标签: authentication owin openid-connect katana

我已使用Startup类在OWIN Pipeline中添加了所有可用的中间件,以对我的项目中的用户进行身份验证。它工作正常。但是如何在运行时启动后将中间件添加到OWIN管道中。  因此管理员可以使用UI输入新身份验证服务器的详细信息,并根据需要注册新的身份验证服务器,而不会影响正在运行的应用程序。

2 个答案:

答案 0 :(得分:4)

实际上,标准的owin管道实现并未设计为在运行时进行修改。它有两个生命周期阶段:init(管道创建)和运行(服务请求)。 解决问题的正确方法是使用在运行时支持配置修改的中间件。

在你的情况下: 如果您使用Kentor.AuthServices lib进行身份验证,则此支持是开箱即用的。您只需要在启动时注册一个中间件实例,并且当您修改(添加或删除IdentityProviders)您最初提供的KentorAuthServicesOptions实例时,中间件将立即使用这些更改。

如果必须使用其他组件,则可以通过将现有的auth中间件包装到新的中间件并在内部处理实例来自行构建此支持。 (您可以创建一个处理配置的中间件,并使用每个配置一个接一个地调用auth中间件等。)

答案 1 :(得分:0)

不,它不是为在启动后添加中间件而设计的,但以下是您可以手动执行此操作的方法:https://github.com/Tratcher/MiddlewareInjector/