会话丢失,用户从django oscar中的支付网关的外部重定向注销

ktca8awb  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(318)

我在django oscar集成了一个第三方支付网关。在结帐时,用户被重定向到支付网关,用户在其中填写支付详细信息;在成功支付时,支付网关将成功响应发回我网站上的自定义url。但当我收到响应时,用户变得匿名,会话数据丢失,用户在重定向到thankyou页面时从网站注销。
如果有人以前解决过这个问题,请指导我。谢谢。

ppcbkaq5

ppcbkaq51#

几乎可以肯定的是,你的会话cookie SameSite 属性设置为 Lax ,这是django的默认值。这意味着cookie“在csrf倾向的请求方法(例如post)中被阻止”-因此,如果您有直接来自第三方站点的post请求,此cookie将被阻止,并且在您看来,用户似乎没有登录。
您可以选择:
改变 SESSION_COOKIE_SAMESITENone ,并接受文档中描述的安全含义(这并不理想)。
修改视图逻辑,以便接收post请求的视图将用户重定向到另一个视图,确保在执行此操作时不会向会话写入任何内容。然后,您必须确保post中接收到的任何数据都正确地存储在其他地方,以便在重定向之后再次检索它。

相关问题