如何从AuthorizeAttribute自定义类上的HttpActionContext获取cookie?

时间:2018-07-24 14:42:56

标签: c# asp.net-mvc asp.net-web-api cookies

我正在验证存储在cookie上的令牌,因此我创建了一个类

public class VIEWAuthorizeAttribute : AuthorizeAttribute

然后我覆盖了OnAuthorization类

public override void OnAuthorization(AuthorizationContext filterContext)
{
   var cookie = filterContext.HttpContext.Request.Cookies.Get("Profile"); //This is working

   if (cookie != null && IsValidToken(cookie["Token"]))
   {
       return;
   }

   HandleUnauthorizedRequest(filterContext);
}

这对于MVC控制器来说效果很好,但是当我尝试对Web api控制器执行类似操作时,我无法从请求中获取Cookie。

public override void OnAuthorization(HttpActionContext actionContext)
{
    var foo = actionContext.Request.Headers.Cookies; //that is not working
    if (Authorize(actionContext))
    {
        return;
    }
    HandleUnauthorizedRequest(actionContext);
}

actionContext.Request.Headers没有方法Cookies,我也尝试过像answer这样的actionContext.Request.Headers.GetCookies("Bar"),但是Header没有那个GetCookies方法。 / p>

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

string Authentication = string.Empty;
if (actionContext.Request.Headers.Contains("Cookie_Phone"))
{
    Authentication = actionContext.Request.Headers.GetValues("Cookie_Phone")?.FirstOrDefault();
}