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

Moodle频繁自动登出及报错咨询:invalidkey与invalidsesskey

Moodle频繁自动登出及两类异常的排查与解决方案

异常分析

1. invalidkey 密钥错误

该异常触发于Userkey认证模块的密钥验证流程,调用链显示在通过用户密钥登录时,core_userkey_manager 验证密钥失败抛出异常,直接导致登录失败或会话终止。

2. invalidsesskey 会话密钥无效

该异常来自测验自动保存的AJAX请求,会话密钥验证失败,提示会话超时,是用户答题时频繁登出的直接诱因。


针对性排查与解决步骤

处理 invalidkey 异常

  • 检查Userkey认证插件配置
    • 进入Moodle后台「站点管理->插件->认证->Userkey认证」,确认密钥有效期设置是否合理,避免过短导致密钥提前失效。
    • 查询数据库表 mdl_user_keys,检查是否存在大量过期或无效的密钥记录,可手动清理异常数据。
  • 验证密钥逻辑细节
    • 临时开启Moodle调试模式(修改config.php,设置$CFG->debug = DEBUG_DEVELOPER;),重新触发登录操作,获取更详细的密钥验证失败原因(如密钥不存在、权限不匹配、签名错误)。
    • 检查第三方集成场景:若有外部系统通过Userkey接口调用Moodle登录,确认外部系统传递的密钥是否正确,是否存在重复使用过期密钥的情况。

处理 invalidsesskey 异常

  • 核对会话超时配置
    • 检查config.php中的会话参数:
      • $CFG->sessiontimeout:PC端会话超时时间(默认1440秒,即24分钟)
      • $CFG->sessiontimeoutmobile:移动端会话超时时间
      • 同时确认服务器PHP配置的session.gc_maxlifetime值,需大于等于Moodle的会话超时设置,避免服务器提前回收会话。
  • 修复测验自动保存问题
    • 检查浏览器控制台是否有AJAX请求失败记录,确认是否存在跨域限制或资源加载异常导致sesskey无法正确传递。
    • 强制清除浏览器缓存,测试是否因缓存旧会话数据导致sesskey不匹配。
  • 检查会话存储稳定性
    • 若Moodle使用数据库存储会话,查询mdl_sessions表,确认会话记录是否被异常清理;若使用文件存储,检查服务器moodledata/sessions目录的读写权限是否正常。

通用修复操作

  • 清除Moodle全量缓存:后台进入「站点管理->开发->清除缓存」,清空所有缓存类型。
  • 版本兼容性检查:确认当前Moodle核心版本与Userkey认证插件版本是否兼容,如有官方更新,及时升级修复已知BUG。
  • 服务器时间同步:确保Moodle服务器与用户客户端时间偏差在1分钟以内,时间差会导致密钥、会话的有效期判断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:34