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