我已使用Startup类在OWIN Pipeline中添加了所有可用的中间件,以对我的项目中的用户进行身份验证。它工作正常。但是如何在运行时启动后将中间件添加到OWIN管道中。 因此管理员可以使用UI输入新身份验证服务器的详细信息,并根据需要注册新的身份验证服务器,而不会影响正在运行的应用程序。
答案 0 :(得分:4)
实际上,标准的owin管道实现并未设计为在运行时进行修改。它有两个生命周期阶段:init(管道创建)和运行(服务请求)。 解决问题的正确方法是使用在运行时支持配置修改的中间件。
在你的情况下: 如果您使用Kentor.AuthServices lib进行身份验证,则此支持是开箱即用的。您只需要在启动时注册一个中间件实例,并且当您修改(添加或删除IdentityProviders)您最初提供的KentorAuthServicesOptions实例时,中间件将立即使用这些更改。
如果必须使用其他组件,则可以通过将现有的auth中间件包装到新的中间件并在内部处理实例来自行构建此支持。 (您可以创建一个处理配置的中间件,并使用每个配置一个接一个地调用auth中间件等。)
答案 1 :(得分:0)
不,它不是为在启动后添加中间件而设计的,但以下是您可以手动执行此操作的方法:https://github.com/Tratcher/MiddlewareInjector/