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

Laravel 5.5升级后登录报错及切换SESSION_DRIVER遇新问题求助

解决方案:Laravel 5.5 升级后 Entrust 登录报错问题

我之前在从 Laravel 5.4 升级到 5.5 并使用 Entrust 组件时,也碰到过几乎一模一样的问题,给你整理了两个核心问题的解决步骤:

1. 先解决「页面过期(The page has expired due to inactivity)」问题

这个错误本质是 CSRF 验证失败,和你改 SESSION_DRIVER 关系不大,先把这个根源问题解决:

  • 检查你的登录表单,Laravel 5.5 开始推荐用 Blade 指令 @csrf 生成 CSRF 令牌,替换之前的 {{ csrf_field() }},确保表单里有这个令牌字段
  • 确认 .env 文件里的 APP_URL 配置和你当前访问的域名完全一致(比如带不带 www、http/https),Laravel 的 session 域和安全设置会依赖这个值
  • 运行以下命令清除旧的 session 和缓存:
    php artisan session:clear
    php artisan cache:clear
    
    之后把 SESSION_DRIVER 改回 file(或者你之前用的驱动,比如 database),这时候登录应该不会再出现页面过期的错误了。

2. 解决「This cache store does not support tagging」错误

你之前改 SESSION_DRIVER=array 是搞错了对象——这个报错是 缓存驱动 不支持标签,而不是 session 驱动的问题,Entrust 组件的权限缓存用到了缓存标签,而 array 缓存驱动(注意是 CACHE_DRIVER,不是 SESSION_DRIVER)不支持标签。解决方法二选一:

  • 方案一:调整 Entrust 的缓存配置
    打开 config/entrust.php,找到 cache 配置块,把 enabled 设置为 false,这样 Entrust 就不会使用缓存标签了:
    'cache' => [
        'enabled' => false,
        'expiry' => 60,
    ],
    
  • 方案二:更换支持标签的缓存驱动
    在 .env 文件里把 CACHE_DRIVER 设置为 file 或者 redis(这两个驱动支持缓存标签),保持 SESSION_DRIVER 为你常用的驱动即可。

按照上面的步骤操作后,应该就能正常登录并使用 Entrust 组件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:19:47