gpt4 book ai didi

c# - ASP.Net Cookie 未保存到浏览器

转载 作者:行者123 更新时间:2023-12-05 03:27:54 24 4
gpt4 key购买 nike

我只想保存包含安全 token 的 cookie,但它们不会持久保存在浏览器中。这是我用于保存 cookie 的 AuthController 方法(简化):

[AllowAnonymous]
[HttpPost("authorize")]
[ProducesResponseType((int)HttpStatusCode.OK)]
public async Task<IActionResult> AuthorizeAsync()
{
//generating access token ommited for brevity
SetTokenCookie(accessToken);
return Ok(userIdentity);
}

SetTokenCookie方法:

private void SetTokenCookie(string accessToken)
{
var options = _jwtOptions.AccessToken;
var cookieOptions = new CookieOptions()
{
HttpOnly = true,
IsEssential = true,
Secure = false,
SameSite = SameSiteMode.Strict,
Domain = options.Issuer, //http://localhost:3394 by default
Expires = DateTime.UtcNow.AddDays(14)
};

Response.Cookies.Append(options.Name, accessToken, cookieOptions);
}

现在,当我分析来 self 的 Api 的响应时,我发现 Set-Cookie header 和 token 本身没有问题: Response headers解码 token :

{
"id": "70132f61-4d83-4772-9685-7a77a9204685",
"name": "admin",
"email": "xyz@xyz.pl",
"role": "Administrator",
"persist": "True",
"nbf": 1646336045,
"exp": 1646336945,
"iat": 1646336045,
"iss": "http://localhost:3394",
"aud": [
"blog.webgateway",
"blog.blogging",
"blog.comments",
"blog.users"
]
}

但是当我检查 cookie 时,没有任何内容被保存。

我知道有很多主题与这个问题相关,但我已经用尽了我在网上可以找到的想法:

  1. 我删除浏览器中的本地主机存储空间
  2. 我在主机文件中添加了自定义条目并相应地更改了 cookie 域
  3. 我尝试设置 cookie domain = null 或不同的路径
  4. 我添加了 Cors 并允许凭据、任何方法、任何 header 、任何来源
  5. 我在浏览器中尝试了更宽松的设置
  6. 我尝试更改 cookie 选项(HttpOnlySecureSameSite)
  7. 我从我的 Startup.cs 中删除了 UseHttpsRedirection() 并确保我通过 HTTP
  8. 连接

似乎没有任何效果。我正在使用 Firefox 97.0.1。你知道我还能尝试什么吗?

最佳答案

您是否尝试将 Domain 更改为 localhost

根据我的测试,使用 `` 对我不起作用,然后我发现其他 cookie 显示它们属于域 localhost,所以我改用 localhost,然后我可以看到新的创建的 cookie。我在chrome中测试通过工具调用api,所以我觉得应该和你的场景类似。

public string saveCookie() {
var cookieOptions = new CookieOptions()
{
HttpOnly = true,
IsEssential = true,
Secure = false,
SameSite = SameSiteMode.Strict,
Domain = "localhost", //using https://localhost:44340/ here doesn't work
Expires = DateTime.UtcNow.AddDays(14)
};

Response.Cookies.Append("testCookie", "Cookie content", cookieOptions);
return "hello world";
}

enter image description here

关于c# - ASP.Net Cookie 未保存到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71343013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com