我在django oscar集成了一个第三方支付网关。在结帐时,用户被重定向到支付网关,用户在其中填写支付详细信息;在成功支付时,支付网关将成功响应发回我网站上的自定义url。但当我收到响应时,用户变得匿名,会话数据丢失,用户在重定向到thankyou页面时从网站注销。如果有人以前解决过这个问题,请指导我。谢谢。
ppcbkaq51#
几乎可以肯定的是,你的会话cookie SameSite 属性设置为 Lax ,这是django的默认值。这意味着cookie“在csrf倾向的请求方法(例如post)中被阻止”-因此,如果您有直接来自第三方站点的post请求,此cookie将被阻止,并且在您看来,用户似乎没有登录。您可以选择:改变 SESSION_COOKIE_SAMESITE 至 None ,并接受文档中描述的安全含义(这并不理想)。修改视图逻辑,以便接收post请求的视图将用户重定向到另一个视图,确保在执行此操作时不会向会话写入任何内容。然后,您必须确保post中接收到的任何数据都正确地存储在其他地方,以便在重定向之后再次检索它。
SameSite
Lax
SESSION_COOKIE_SAMESITE
None
1条答案
按热度按时间ppcbkaq51#
几乎可以肯定的是,你的会话cookie
SameSite
属性设置为Lax
,这是django的默认值。这意味着cookie“在csrf倾向的请求方法(例如post)中被阻止”-因此,如果您有直接来自第三方站点的post请求,此cookie将被阻止,并且在您看来,用户似乎没有登录。您可以选择:
改变
SESSION_COOKIE_SAMESITE
至None
,并接受文档中描述的安全含义(这并不理想)。修改视图逻辑,以便接收post请求的视图将用户重定向到另一个视图,确保在执行此操作时不会向会话写入任何内容。然后,您必须确保post中接收到的任何数据都正确地存储在其他地方,以便在重定向之后再次检索它。