Зарегистрировать новое промежуточное ПО для конвейера OWIN во время выполнения без перезапуска приложения

Я добавил все доступное промежуточное ПО в OWIN Pipeline, используя класс запуска для аутентификации пользователя в моем проекте. Работает нормально. Но как я могу добавить промежуточное ПО в OWIN Pipeline после запуска во время выполнения. Таким образом, администратор может вводить данные нового сервера аутентификации с помощью пользовательского интерфейса и регистрировать новый сервер аутентификации по требованию, не мешая работе приложения.

2 ответа

На самом деле, стандартная реализация конвейера owin не предназначена для изменения во время выполнения. Он имеет два этапа жизни: init (создание конвейера) и running (обслуживание запросов). Правильный и ясный подход к вашей проблеме - использовать промежуточное ПО, которое поддерживает изменение конфигурации во время выполнения.

В вашем случае: если вы используете Kentor.AuthServices lib для аутентификации, то эта поддержка предоставляется сразу после установки. Вам нужно зарегистрировать только один экземпляр промежуточного программного обеспечения при запуске, и когда вы модифицируете (добавляете или удаляете IdentityProviders) экземпляр KentorAuthServicesOptions, который вы предоставили изначально, изменения сразу же будут использоваться промежуточным программным обеспечением.

Если вам нужно использовать другие компоненты, вы можете создать эту поддержку самостоятельно, обернув существующее промежуточное программное обеспечение аутентификации в новое и обработав экземпляры внутри. (Вы можете создать промежуточное программное обеспечение, которое обрабатывает конфигурацию (и) и вызывает промежуточное программное обеспечение аутентификации один за другим с каждой конфигурацией... и т. Д.)

Нет, он не предназначен для добавления промежуточного программного обеспечения после запуска, но вот как вы можете сделать это вручную: https://github.com/Tratcher/MiddlewareInjector/

Другие вопросы по тегам