我有一个自定义的授权属性,它基本上只是验证一个 cookie 是随请求一起发送的,并且它有一个分配的值。
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 存储在某个地方以供以后直接从属性中使用到控制器中?