2016-08-10 3 views
8

Когда я регистрирую промежуточное ПО как часть конвейера запроса, как передавать данные через цепочку промежуточного программного обеспечения. (в конечном счете доступный при действии контроллера MVC)Передача данных в промежуточное программное обеспечение далее по цепочке

Например, я применил специальное промежуточное программное обеспечение для аутентификации моих запросов, но как передать данные аутентификации (например, результат проверки подлинности и дополнительные данные) по цепочке промежуточное программное обеспечение - в конечном счете, хочет получить доступ к данным из действия контроллера MVC, а также в пользовательский фильтр действий MVC для ограничения доступа на основе результатов проверки подлинности.

Есть ли где-нибудь я могу хранить пользовательские данные по запросу и получать доступ к ним позже в цепочке запросов?

+0

Если вы хотите добавить дополнительные требования к текущей основной (насколько я понимаю, ваш пример), вы можете использовать 'Требований Transformation'. –

ответ

12

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

Запись:

context.Items["AuthData"] = authData; 

Read:

var authData = (AuthData)context.Items["AuthData"]; 

Смотрите ASP.NET docs для получения дополнительной информации.

+0

Я знал, что он существует, просто не мог его найти. Благодаря :) – Warrick

0

Вы можете сохранить пользовательские данные в объекте IOwinContext. Объекту IOwinContext можно получить доступ из функции Invoke вашего промежуточного программного обеспечения.

Set

context.Set<T>("key", obj); 

Получить

var obj = context.Get<T>("key"); 
Смежные вопросы