ThinkPHP

一次Thinkphp6的Session无法获取的非典型问题的解决

文 / 王力 来源 / 转载 https://zhuanlan.zhihu.com/p/359476999 阅读 / 324 2年前

根据Thinkphp6手册的说明,在app\middleware.php 中开启了 Session

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    \think\middleware\SessionInit::class
];

但是在所有用到的Session的地方都无法正常使用(验证码、表单Token等),自己set的Session也无法get出来。

根据网上的各种搜索结果一一做了尝试,均以失败告终。最终在浏览器工具中发现了问题

image.png


因为开启了cookies的安全传输,所以在非安全连接的情况下 PHPSESSID 没有被放入本地Cookies,

问题终于找到了,是我之前手闲的去修改了 config/cookie.php 的配置文件, 重点:把secure设置为false

<?php
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
return [
    // cookie 保存时间
    'expire'    => 0,
    // cookie 保存路径
    'path'      => '/',
    // cookie 有效域名
    'domain'    => '',
    //  cookie 启用安全传输(就是这里,请恢复默认false即可解决)
    'secure'    => true,
    // httponly设置
    'httponly'  => true,
    // 是否使用 setcookie
    'setcookie' => true,
    // samesite 设置,支持 'strict' 'lax'
    'samesite'  => '',
];

至此,困扰我2周的问题终于解决了,希望给遇到同类问题的朋友提供一个解决思路!

评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2020-2030 qdxcy.cn 版权所有京ICP备13045222号
相关侵权、举报、投诉及建议等,请发E-mail:2323946929@qq.com

友情链接: YzmCMS官方网站 YzmCMS官方论坛