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:clearSESSION_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
相关产品推荐
相关产品推荐

