触发此错误的方法如下:
def nonce_valid?
if SiteSetting.discourse_connect_csrf_protection
nonce && @secure_session[nonce_key].present?
else
nonce && Discourse.cache.read(nonce_key).present?
end
end
它会检查 nonce 是否由 Discourse 为与将用户重定向回 Discourse 的会话相同的会话生成。
您可以尝试将 discourse_connect_csrf_protection 站点设置设置为 false。其默认值为 true。这是一个隐藏的站点设置,因此只能从 Rails 控制台禁用。
启用时,discourse_connect_csrf_protection 设置可确保整个 SSO 身份验证过程都通过浏览器重定向进行。如果您通过向 session/sso 发出后台请求来启动身份验证过程,则需要禁用它。更多详情请参见:DiscourseConnect flow no longer functions - #5 by david