OpenCart 3.x后台点击菜单跳转登录页,提示无效会话令牌的解决方法
检查后台Cookie设置
进入系统设置(System > Settings),编辑商店,切换到「Server」标签页,确保「Session Cookie Domain」填写正确(比如域名是example.com就填.example.com,注意前缀的点);「Session Cookie Path」设为/。同时确认「Use SSL」和「Use SSL for Admin」的设置和服务器环境匹配,后台用HTTPS的话这两项要设为Yes。验证文件及目录权限
确保服务器上的关键目录权限正确:system/storage/session/权限设为777(或服务器允许的可写入权限)system/storage/cache/权限设为777
权限不对会导致会话文件无法正常写入,直接引发token验证失败。
清除缓存与会话文件
手动删除system/storage/cache/下的所有文件(保留index.html),以及system/storage/session/下的所有会话文件。另外在后台「Extensions > Modifications」页面点击右上角的「Refresh」按钮,刷新修改缓存。检查token验证相关配置
打开config.php和admin/config.php文件,确认会话驱动配置:define('SESSION_DRIVER', 'file');如果用数据库会话驱动,要确保数据库连接正常,且
oc_session表能正常读写。不要随意修改system/library/session.php里的token验证逻辑,避免破坏原有机制。排除浏览器或网络干扰
- 清除浏览器缓存和Cookie,重新登录后台
- 用无痕模式或其他浏览器测试,排除浏览器插件、本地缓存的问题
- 检查CDN、反向代理(如Cloudflare)是否开启了后台路径(
/admin/)的缓存,如有需要排除该路径的缓存规则。
修复核心文件
要是以上方法都没效果,可能是核心文件被篡改或损坏。从OpenCart官方下载对应3.x版本的安装包,替换admin/controller/common/、admin/model/common/和system/library/session.php这些涉及会话、token验证的核心文件,替换前记得备份原文件。
内容的提问来源于stack exchange,提问作者musab

