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

October CMS后台缓存导致用户编辑页未授权访问问题咨询

问题原因分析

  • 核心漏洞匹配:你使用的October CMS Build 469版本存在已知的后台路由缓存权限校验缺陷,官方在后续Build 470版本专门修复了该问题。
  • 受影响路由正好是你提到的两类页面:backend/users/update/*后台用户编辑页、rainlab preview用户页面,这两个路由在该版本默认配置了10分钟的HTTP响应缓存规则,当superuser访问后,响应内容会被直接缓存到memcached中,后续未登录用户访问相同路径时,系统会直接返回缓存内容,不做身份权限校验。
  • 缓存仅存储静态页面内容,不会携带登录用户的有效CSRF token,所以你只能查看页面数据,提交操作时会触发token校验失败,和你观测到的现象完全匹配。
  • 10分钟后页面无法访问的现象,正好对应该路由默认的缓存有效期配置,缓存过期后请求会重新走权限校验逻辑,未登录用户就会被跳转至登录页。
  • 该问题和你多站点部署、memcached前缀配置无关,属于单站点内核的路由缓存规则缺陷。

关闭October CMS后台缓存的方法

方法1:全局关闭后台路由缓存(最便捷)

修改站点根目录下config/cms.php配置文件,找到enable_backend_route_cache参数,将值修改为false:

return [
    // 其他配置项不变
    'enable_backend_route_cache' => false,
];

修改完成后执行命令清理现有缓存即可生效:
php artisan cache:clear

方法2:仅关闭受影响路由的缓存(不影响其他功能缓存)

在站点routes/backend.php文件中添加路由覆盖规则,移除指定路由的缓存中间件:

// 禁用后台用户编辑页缓存
Route::get('users/update/{user_id}', [\Backend\Controllers\Users::class, 'update'])
    ->withoutMiddleware(\October\Rain\Router\Middleware\CacheResponse::class);

// 禁用rainlab preview用户页面缓存
Route::get('rainlab/user/preview/{user_id}', [\RainLab\User\Controllers\Users::class, 'preview'])
    ->withoutMiddleware(\October\Rain\Router\Middleware\CacheResponse::class);

添加后同样执行php artisan cache:clear清理旧缓存即可。

方法3:永久修复建议

直接升级October CMS到Build 470及以上正式版本,官方已在该版本修复了该权限漏洞,无需手动修改配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:06