У меня есть настраиваемый атрибут authorize, который в основном просто проверяет, что cookie был отправлен с запросом и что он имеет назначенное значение.Пользовательский атрибут authorize - могу ли я сохранить значение позже?
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
throw new ArgumentNullException("filterContext");
bool skipAuthorization = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true)
|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true);
if (skipAuthorization) return;
var cookie = filterContext.HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
var decCookie = FormsAuthentication.Decrypt(cookie.Value);
if(decCookie != null)
{
if (!string.IsNullOrEmpty(decCookie.UserData))
{
return;
}
}
}
HandleUnauthorizedRequest(filterContext);
}
Это делает то, что мне нужно, но это возможно для меня, чтобы сохранить decCookie.UserData где-то, что она может быть доступна в действии контроллера? Я сделал метод расширения, который в любом случае будет извлекать его в контроллере, но это действительно просто копия того, что уже сделал атрибут.
Итак, есть ли способ, которым я могу избежать использования метода расширения и просто сохранить UserData где-нибудь для последующего использования в контроллере прямо из атрибута?
Это было замечательно! – Zholen