Оригинальный ответ
Вы должны быть в состоянии сделать это в своем фильтре
filterContext.HttpContext.Items["test"] = "foo";
А потом это в вашем действии
_yourVariable = HttpContext.Items["test"];
Возможно, вы захотите использовать более уникальный ключ, чем "test"
, но это идея.
РЕДАКТИРОВАТЬ Есть две причины, по которым мы делаем это в действии, а не в конструкторе:
- Конструктор контроллера срабатывает перед OnAuthorization , поэтому элемент еще не будет установлен.
- HttpContext еще не установлен в конструкторе контроллера.
Альтернативное решение
- Создать новый
OAuthController : Controller
- Переопределить
OnAuthorization
- Переместите логику из вашего фильтра в
OAuthController.OnAuthorization
- Установить поле
protected
(т. Е. protected object myAuthData
) в OAuthController
- Пусть другие ваши контроллеры наследуют от
OAuthController
вместо Controller
- Ваши другие контроллеры могут получить доступ
myAuthData
.