我正在验证存储在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>
有什么主意吗?
答案 0 :(得分:0)
string Authentication = string.Empty;
if (actionContext.Request.Headers.Contains("Cookie_Phone"))
{
Authentication = actionContext.Request.Headers.GetValues("Cookie_Phone")?.FirstOrDefault();
}