gpt4 book ai didi

owin - OWIN 安全 AuthenticationHandler 中的多个 cookie 问题

转载 作者:行者123 更新时间:2023-12-01 15:37:54 27 4
gpt4 key购买 nike

我正在使用 Facebook Owin 身份验证并或多或少地遵循 Microsoft 示例。我或多或少地关注第一次用户登录,一切正常。但如果他们退出并重试,似乎之前的 .AspNet.Correlation.Facebook 没有被删除,而是设置为空字符串。所以我对 api/getexternallogin 的下一次调用在 Fiddler 中看起来像这样:

enter image description here

这是当我们生成一个 correlationId 并且此时有多个 cookie 不是一个显示停止器。在响应中,我将其设置为新的 CorrelationId:

enter image description here

稍后当 facebook 回调到“/signin-facebook”时,我们尝试在 ValidateCorrelationId 方法中验证 correlationId。请求看起来像这样:

enter image description here

所以新的 CorrelationId 已经设置,但是没有值的额外 cookie 意味着当我去 Request.Cookies["ValidateCorrelationId"] 时,它返回空字符串。

我检查了代码,似乎修改此 cookie 的唯一方法是 GenerateCorrelationId 和 ValidateCorrelationId。这些方法的实现可以在这里找到:

http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security/Infrastructure/AuthenticationHandler.cs

奇怪的是,我的浏览器似乎没有发现问题:

enter image description here

任何想法将不胜感激。

最佳答案

好吧,这让我有点沮丧,但是当在 ValidateCorrelationId 方法中调用 Response.Cookies.Delete(".AspNet.Correlation.Facebook") 时,它会发送以下响应:

enter image description here

因此“expires”的值被连接起来并被视为两个单独的“set-cookie”。因此,cookie 没有过期,但它的值设置为空字符串。似乎是“Thu”之后的逗号引起的。

我想出的解决方法是注释掉 Response.Cookies.Delete(".AspNet.Correlation.Facebook") 并改为执行以下操作:

Response.Headers.Add("Set-Cookie", new[] { CorrelationKey + "=; path=/; expires=Fri 02-Jan-1970 00:00:00 GMT" })

那里没有逗号,现在可以使用了。

这看起来确实像是 OWIN 中的真正错误。

关于owin - OWIN 安全 AuthenticationHandler 中的多个 cookie 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878604/

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