Как зарегистрироваться и получить IUserIdentity из контейнера в NancyFx?

Я использую FluentValidation с NancyFx. Я хочу проверить некоторые данные в соответствии с текущим контекстом, точно в отношении текущего пользователя. К сожалению, я не могу найти ни одного примера, как зарегистрироваться и получить из контейнера (я использую StructureMap) такую ​​информацию.

Документы "Контекст должен быть доступен в большинстве мест Нанси, поэтому никогда не должно быть проблем с установлением личности пользователя, который вызывает текущий запрос". но контейнер не имеет его по умолчанию.

Любые ссылки, направления?

Буду благодарен за вашу помощь.

2 ответа

Контекст является областью запроса, как и идентификатор пользователя, и передается в метод RequestStartup, который вы можете переопределить в своем загрузчике. Контейнер также передается в RequestStartup, так что вы можете зарегистрировать все, что вам нужно для каждого запроса, и использовать контекст при создании объектов, которые вы регистрируете.

Нечто подобное:

Зарегистрируйте ICurrentContextProvider для каждого запроса. ICurrentContextProvider может иметь только одно свойство IUserIdentity, хотя я бы порекомендовал сделать его с двумя явными методами для установки и получения, чтобы вы могли предотвратить двойную инициализацию и т. Д.

Сделайте так, чтобы ваш IUserMapper (предполагая, что его запрос также ограничен) зависел от ICurrentContextProvider, и после сопоставления установите свойство.

После этого любой код, который зависит от ICurrentContextProvider, будет иметь доступ к заданному вами свойству.

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