You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5:laravel_session Cookie与XSRF Token丢失问题排查

排查Laravel 5.5会话加密后laravel_session Cookie和XSRF Token丢失的问题

我之前也碰到过类似的情况,启用会话加密后出现这类问题,大概率和加密密钥有效性、Cookie配置合理性或者会话存储权限有关,给你梳理几个关键排查和解决步骤:

1. 验证APP_KEY的有效性

Laravel的会话加密完全依赖.env文件中的APP_KEY,它必须是32位的随机字符串(格式为base64:xxx)。如果APP_KEY不正确或缺失,加密/解密会话数据会直接失败,导致浏览器无法识别laravel_session Cookie,进而丢失会话和XSRF Token。

  • 先检查.env文件中的APP_KEY是否存在且格式正确;
  • 如果不确定,执行命令重新生成(注意:生产环境要提前备份加密数据,新密钥会导致旧加密数据无法解密):
    php artisan key:generate
    

2. 核对session.php中的核心配置

打开你的config/session.php,重点检查以下配置项:

加密开关确认

确保加密配置已正确启用(你提到已启用,再确认一次):

'encrypt' => true,

Cookie基础配置

  • 路径(path):必须设为'/',保证Cookie在整个域名下生效:
    'path' => '/',
    
  • 域名(domain):如果应用有子域名,设置为.yourdomain.com(开头的点适配所有子域名);本地开发可留空或设为null:
    'domain' => env('SESSION_DOMAIN', null),
    
  • Secure Cookie:如果网站不是HTTPS协议,secure必须设为false,否则浏览器会拒绝存储Cookie:
    'secure' => env('SESSION_SECURE_COOKIE', false),
    

3. 检查会话存储的权限

如果用默认的file会话驱动,要确保storage/framework/sessions目录有可写权限:

chmod -R 755 storage/framework/sessions
chown -R www-data:www-data storage/framework/sessions # 根据你的服务器用户调整

如果是database驱动,确认session数据表已通过php artisan session:table和migrate创建,且数据库用户有写入权限。

4. 验证XSRF Token的传递逻辑

XSRF Token依赖会话存储,会话正常后Token通常会自动恢复。另外要确保前端请求正确携带Token:

  • 表单提交时,页面要包含csrf_token()生成的隐藏字段;
  • AJAX请求要在请求头中设置X-XSRF-TOKEN,值为浏览器中XSRF-TOKEN Cookie的内容;
  • Laravel 5.5会自动设置XSRF-TOKEN Cookie,只要会话正常,这个Cookie会自动生成。

5. 清除缓存和旧Cookie

最后执行以下命令清除配置缓存和会话缓存:

php artisan config:clear
php artisan cache:clear
php artisan session:flush

同时在浏览器中清除当前域名下的所有Cookie,重新访问应用测试。


内容的提问来源于stack exchange,提问作者gerger callanga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:11:50