如何将Cookie设置为DOM

时间:2016-04-15 09:29:02

标签: javascript security cookies asp.net-web-api jwt

让我先讨论整个故事: 我有一个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。

感谢。

0 个答案:

没有答案