如何解决在重定向到ASP.NET MVC中的第三方URL后,如何维护会话?
在实际重定向到第三方URL之前,我们基本上是在Session中存储用户的会话ID,用户ID等,因此当我们返回返回URL以发布付款网关的数据时,我们将需要通过检索用户会话,此时我们的会话已清除/为空。 Chrome在84以上的版本中会发生这种情况。因为在Firefox浏览器中重定向后,我仍然能够维护用户会话。 无论Chrome版本如何,我也都希望这样做。重定向后如何维护每个用户的会话?
注意:
- 我尝试过通过全局声明字典并在重定向之前在其中填充值来尝试字典。但这也会得到错误,即在bck后返回URL找不到密钥。
- 我尝试通过针对发送给第三方URL的txnid存储用户信息来尝试会话,它会将我们发送回返回的URL,并且返回null。
- 无法为每个用户在数据库中存储会话,因为它将创建问题并已加载到数据库。
可以尝试其他任何选择。请帮忙。我正在使用ASP.NET MVC。
解决方法
You need to set a SameSite
cookie policy。
您应使用的确切SameSite
选项取决于重定向的类型:
- 如果重定向是使用
GET
或POST
的HTTP 3xx重定向,并且所有请求都通过HTTPS,则可以使用SameSite=None
。 - 如果“重定向”是由客户端
<meta>
元素或使用window.location = 'newUrl'
的JavaScript启动的,则可以使用SameSite=None
。 - 如果重定向是使用
GET
的HTTP 3xx重定向,并且并非所有请求都通过HTTPS,则可以使用SameSite=Lax
。 - 如果重定向是使用
POST
的HTTP 3xx重定向,并且并非所有请求都通过HTTPS进行,则没有快速修复:您将需要对所有请求使用HTTPS。
{。{1}}选项已添加到.NET Framework 4.7.2中的ASP.NET WebForms和ASP.NET MVC中,尽管您应该使用.NET Framework 4.8。如果您无法将项目更新到.NET Framework 4.7.2或更高版本,then you can use a trick with IIS' <rewrite>
rules to modify response Set-Cookie
requests。
You can configure defaults for SameSite
in your web.config file,但您需要更新几个不同的位置:
- 直接使用
SameSite
时指定<system.web><httpCookies sameSite="Strict|Lax|None|Unspecified" />
。 - 为ASP.NET自己的会话cookie指定
HttpCookie
(这是OP的问题)。- 请注意,您不能为
<system.web><sessionState cookieSameSite="Strict|Lax|None" />
指定Unspecified
-但永远不要使用<sessionState>
,这样就不会成为问题({Unspecified
只需要{{3 }},因为Apple Safari当时无法识别Unspecified
,但今天没有人应该使用iOS 12。
- 请注意,您不能为
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。