Передайте данные в промежуточное ПО дальше по цепочке
Когда я регистрирую промежуточное ПО как часть конвейера запросов, как я передаю данные через цепочку промежуточного ПО? (в конечном счете, доступно в действии контроллера MVC)
Например, я реализовал пользовательское промежуточное программное обеспечение для аутентификации моих запросов, но как я могу передать данные аутентификации (например, результат аутентификации и дополнительные данные) по цепочке промежуточного программного обеспечения - в конечном итоге, желая получить доступ к данным из действия контроллера MVC а также в настраиваемом фильтре действий MVC для ограничения доступа на основе результатов аутентификации.
Могу ли я где-нибудь хранить пользовательские данные для каждого запроса и обращаться к ним позже в цепочке запросов?
2 ответа
Вы можете использовать HttpContext.Items
сбор для хранения данных за время существования запроса. Его основной сценарий использования - передача данных вокруг компонентов (например, промежуточного программного обеспечения и контроллеров). Добавлять и читать элементы легко:
Написать:
context.Items["AuthData"] = authData;
Читать:
var authData = (AuthData)context.Items["AuthData"];
См. ASP.NET документы для получения дополнительной информации.
Вы можете хранить пользовательские данные в объекте IOwinContext. Доступ к объекту IOwinContext можно получить из функции Invoke вашего промежуточного программного обеспечения.
Задавать
context.Set<T>("key", obj);
Получить
var obj = context.Get<T>("key");