Canvas LMS中LTI 1.3工具启动时出现login_required错误
LTI 1.3工具在Canvas LMS非公开课程启动时触发
login_required错误 问题详情
- 按Canvas LMS官方文档步骤发送LTI 1.3身份验证请求后,工具启动时返回
login_required错误,错误描述为Must have an active user session - 该问题仅在非公共课程中出现,公共课程可正常启动工具
- 定位到错误触发点为Canvas LMS源码
lti/ims/authentication_controller.rb第102行,核心原因是@current_user为空,但操作时已处于登录状态 - 已在Canvas开发者社区发现同类未解决问题,问题持续一周
排查与解决建议
- 校验课程权限与状态
非公开课程(未发布/仅指定用户可见)的会话验证逻辑更严格,确认当前登录用户拥有该课程的有效访问权限,且课程处于已发布状态。未发布课程可能会限制LTI工具的会话传递流程。 - 检查会话传递的合法性
- 确认身份验证请求是否正确携带Canvas会话Cookie(如
_canvas_session),跨域场景下需将Cookie的SameSite属性设置为Lax或None,避免被浏览器拦截 - 优先在Canvas同域环境内触发工具启动,跨域请求可能导致会话无法正常传递
- 确认身份验证请求是否正确携带Canvas会话Cookie(如
- 核对LTI密钥配置
检查LTI开发者密钥的Target Link URI是否与工具部署域名完全匹配,非公共课程会额外校验请求来源的合法性,URI不匹配可能引发会话验证失败 - 本地调试会话上下文
搭建Canvas本地测试环境,在authentication_controller.rb第102行附近添加日志,输出session[:user_id]等会话参数,确认会话是否真的未被加载,排查会话存储(如Redis)的配置问题
内容的提问来源于stack exchange,提问作者Anandakrishnan
相关产品推荐
相关产品推荐

