首页 > 解决方案 > 银行重定向 phalconphp 会话丢失

问题描述

我有一个用户可以购买东西的网站。对于付款用户重定向到银行网站 -> 付款 -> 回到该网站。

最近用户返回后,他们失去了之前的会话,不得不重新登录!我猜这与版本 +84 之后的 google chrome cookie 政策有关。

我正在使用 phalcon 3.4 并且 cookie 没有 setOptions 功能来使用 sameSite=None 设置功能没有获得 sameSite 选项 tho 。

public function set($name, $value = null, $expire = 0, $path = '/', $secure = null, 
                    $domain = null, $httpOnly = null)

并且会话没有设置使用 PHPSESSID 和 sameSite=None

我看到了几个解决方法,但都没有工作。

选项 1:在 htaccess 中设置:Header always edit Set-Cookie ^(.*)$ $1;SameSite=None;Secure

选项 2:为应用程序全局设置此标头:header('SameSite=None; Secure');

PS:我当前的 PHP 版本:7.2,Apache 2.4

问:我是谁开始我的会议?a : 使用 di

$di->setShared('session', function (){
    $session = new SessionAdapter();
    $session->start();
    return $session;
});

问:我的网站是否使用 SSL?

一个:是的

问:中间的所有站点(去银行和重定向)都使用 SSL 吗?

一个:是的

问:有什么问题?

a : 重定向后 Session 为 NULL

谢谢 !

标签: phpgoogle-chromecookiesphalcon

解决方案


在花了一些时间在其他问题上并测试了许多可能的解决方案之后,我可以设法保存关于银行回复的会话。

感谢 talal 的评论将我重定向到我应该去的地方。

对于这个特定的环境(Phalcon 3.4,Php 7.2),最好的方法是:

1 - 使用 ini_set 函数将 session.cookie_path 设置为 / 并添加 samesite=none; 安全到最后

2- phalcon bellow 中的工作示例:

$di->setShared('session', function () use ($config) {
if (getenv("ENVIRONMENT") != "development") {
    ini_set('session.cookie_path', "/; samesite=none; secure");
}
$session = new SessionAdapter();
$session->start();
return $session;

});


推荐阅读