我们使用自己的应用程序作为 Discourse 的 SSO 提供商,但在从我们的应用程序将用户链接到 Discourse 论坛中的私密主题时遇到了问题:只有在点击“登录”按钮时才会触发身份验证。
- 我们使用自己的系统作为 Discourse 的 SSO 提供商。
- 我们的 Discourse 论坛中混合了公开页面和私密页面,因此未设置 login_required。
- 如果用户在系统中完成身份验证,并被链接到 Discourse 的根 URL,他们可以看到公开分类,但并未登录。
- 如果用户在系统中完成身份验证,并被链接到 Discourse 的 /login 路径,他们可以正常登录,并被重定向到 Discourse 根 URL。
- 如果用户在系统中完成身份验证,并被链接到 Discourse 中私密分类或主题的 URL,系统会显示一个要求登录的页面。如果他们点击“登录”,则会自动完成登录并显示该分类或主题。
最后一种情况是问题所在。我认为以下任一方案都是可行的:
- 我们可以链接到 ourdiscourse.com/c/some-category?login=true,并执行身份验证检查:如果用户已登录,则显示该主题;如果未登录,则将其发送到我们的 SSO 提供商,并在登录后重定向回该主题。
- 我们可以链接到 ourdiscourse.com/login?redirect=c/some-category,并执行身份验证检查:如果成功,则重定向到查询字符串中的页面;如果失败,则重定向到 SSO 提供商,并在成功登录后重定向回查询字符串中的页面。
- 我们可以链接到 ourdiscourse.com/c/some-category,如果是私密页面,Discourse 将执行身份验证检查:如果成功,则进入该分类;如果失败,则重定向到 SSO 提供商,随后再重定向回来。
谢谢!
(我之前曾在 此处 发布过该问题,抱歉重复发帖,但我认为创建一个新主题可能会获得更多回应。)