php - 银行重定向 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
谢谢 !
解决方案
在花了一些时间在其他问题上并测试了许多可能的解决方案之后,我可以设法保存关于银行回复的会话。
感谢 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;
});
推荐阅读
- angular - 如何为 ngTemplateOutput 分配函数返回值?
- botframework - 用户和机器人消息出现在聊天容器的同一侧
- python - 使用 importlib 从另一个文件夹导入脚本
- sql - 在 MERGE 语句中使用 CASE:ORA-00905:缺少关键字
- javascript - 如何通过变量调用 JavaScript 对象?
- javascript - 在 ReactJS 中根据函数返回显示内容
- javascript - Mobile safari out of memory during video capturing
- java - 读取另一个jar文件的资源
- javascript - 响应式菜单不显示
- flutter - Flutter 如何手动安装包