【发布时间】:2019-01-01 05:53:32
【问题描述】:
我正在验证存储在 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的方法,我也试过actionContext.Request.Headers.GetCookies("Bar")这样answer,但是Header没有GetCookies的方法。
有什么想法吗?
【问题讨论】:
-
您可以使用
HttpContext.Current,因为我认为无法以任何其他方式访问当前上下文。出于某种原因,HttpActionContext无法访问实际的HttpRequest -
actionContext.Request.Headers.GetCookies方法到底有什么问题?这个应该做的工作
标签: c# asp.net-mvc asp.net-web-api cookies