让我先讨论整个故事: 我有一个WebAPI,其中包含登录方法,我在哪里创建jwt令牌并创建cookie。登录操作:
var token = _accountService.GetJWTToken(user);
var resp = new HttpResponseMessage();
var apiCookie = new CookieHeaderValue("jwttoken", token)
{
Expires = DateTimeOffset.Now.AddDays(10),
Domain = "localhost",
HttpOnly = true,
Path = "/"
};
resp.Headers.AddCookies(new[] { apiCookie });
return resp;
我希望API的后续请求应包含cookie,以便我可以通过ActionFilterAttribute进行验证。虽然我可以在响应中看到cookie,但它没有被添加到DOM中。我错过了什么吗?
public override void OnActionExecuting(ActionExecutingContext context)
{
var cookie = context.HttpContext.Request.Cookies[RoleSettings.JWTCookieName];
if (cookie != null)
{
var token = _accountService.DecodeJWTToken(cookie.Value);
context.RouteData.Values.Add("userId", token["userid"]);
base.OnActionExecuting(context);
}
else
{
context.Result =
new RedirectToRouteResult(new RouteValueDictionary(new {Controller = "Account", Action = "Login"}));
}
}
修改:
我希望随后的调用获得cookie。我怎样才能做到这一点?我可以看到cookie随响应而来,但document.cookie不包含jwt cookie。
感谢。