常见问题

优质
小牛编辑
139浏览
2023-12-01

如何通过微信接收工单提醒和社区通知消息?

请关注FastAdmin官方公众号:FastAdmin极速后台,关注以后点击我的->会员中心->登录->使用微信登录并进行绑定你在FastAdmin官网的账号即可。请扫以下二维码进行关注:

如何解决官方演示站iframe窗口内无法登录的问题?

从Chrome浏览器80版本开始,已经默认设置了SameSiteLax,由于官方演示页面嵌套的iframe,会导致iframe内的cookie无法生效。
关闭SameSite的说明可以参考:http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html

由于ThinkPHP5中的Session.php这个类在session_start()之前未设置session.cookie_path,如下:
image.png

可以看到session_start()之前没有进行session.cookie_path的设置,因此需要我们需要通过行为来调用ini_set进行设置。

首先我们需要修改application/config.php中的pathsecure,来设置全局cookiepathsecure,来添加SameSite

'cookie'                 => [
    // cookie 名称前缀
    'prefix'    => 'fa',
    // cookie 保存时间
    'expire'    => 0,
    // cookie 保存路径
    'path'      => '/; samesite=None',
    // cookie 有效域名
    'domain'    => '',
    //  cookie 启用安全传输
    'secure'    => true,
    // httponly设置
    'httponly'  => false,
    // 是否使用 setcookie
    'setcookie' => true,
],

然后打开application/tags.php,修改app_init,增加一行'app\\common\\behavior\\Common',修改后如下:

<?php
// 应用行为扩展定义文件
return [
    // 应用初始化
    'app_init'     => [
        'app\\common\\behavior\\Common',
    ],
    // 应用开始
    'app_begin'    => [],
    // 应用调度
    'app_dispatch' => [
        'app\\common\\behavior\\Common',
    ],
    // 模块初始化
    'module_init'  => [
        'app\\common\\behavior\\Common',
    ],
    // 插件开始
    'addon_begin'  => [
        'app\\common\\behavior\\Common',
    ],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    // 应用结束
    'app_end'      => [],
];

最后打开application/common/behavior/Common.php,添加一个appInit的方法,如下:

public function appInit(){
    ini_set('session.cookie_path', '/; SameSite=None');
    ini_set('session.cookie_secure', true);
}