为 Discourse 添加链接,允许用户通过 SSO 进行身份验证或在已登录时直接访问私有群组

我有一个 WordPress 网站,它使用 WPDiscourse 插件作为 Discourse 的 SSO 提供商。论坛是公开的,但有一些私有群组。

当我想添加按钮将用户从我的 WordPress 网站引导到 Discourse 中的私有群组时,我使用的是 SSO URL,正如此处所述,这样用户就不会看到“哎呀!该页面不存在或已私有。”的提示。

但是,当用户已经通过 SSO 在 Discourse 中进行身份验证,然后他们返回并点击相同的按钮时,他们会再次进入登录页面,即使他们在登录时勾选了“记住我”复选框。理想情况下,一旦他们在 Discourse SSO 中进行了身份验证,他们就可以自由地导航到私有群组。

是否有更好的设置方法?
我曾考虑在 WP 登录页面添加代码,并验证用户是否已在 Discourse 中登录,如果是,则重定向到 URL 中的“return_path”参数指定的页面。这会是解决方法吗?如果是,我可以使用哪些函数或 API 调用来实现它?

谢谢!

1 个赞

如果用户已登录到您的 WordPress 网站,则不应发生这种情况。您能否澄清一下遇到此问题的用户是否已登录到 WordPress?如果他们已登录,则预计他们将被静默重定向到您在 return_path 参数中设置的 Discourse URL。

3 个赞

@rodrigo.braga :slight_smile:

我也有点困惑。如果您能确认以下内容:

设置

按照这里的说明,WordPress 被设置为 Discourse 的 DiscourseConnect 提供商

情况 1

  1. 用户正在您的 WordPress 网站上,并且未登录 WordPress
  2. 用户点击 WordPress 上的链接,格式为 https://discourse.example.com/session/sso?return_path=/g/private_group
  3. 系统提示用户登录 WordPress
  4. 用户登录 WordPress
  5. 用户被重定向到 https://discourse.example.com/g/private_group
  6. 用户看到 private_group,因为他们现在已通过 DiscourseConnect 登录到 Discourse,并且是 private_group 的成员。

目前是这种情况吗?

情况 2

  1. 用户正在您的 WordPress 网站上,并且已登录 WordPress
  2. 用户点击 WordPress 上的链接,格式为 https://discourse.example.com/session/sso?return_path=/g/private_group
  3. 系统提示用户登录 WordPress

目前是这种情况吗?

3 个赞

谢谢 Simon,是的,用户已登录 WordPress。

我场景中奇怪的地方在于,我有一个主要的 WP 站点 (WPSite1),它使用 WP Discourse 作为 Discourse 的 DiscourseConnect 提供程序。

然后我有一个第二个 WP 站点 (WPSite2),它使用 WP Remote User Synch 插件 与 WPSite1 同步用户数据库。

但我不知道为什么这会干扰你提到的预期行为,因为当我登录 WPSite2,然后导航到 WPSite1 时,我也已经在 WPSite1 上登录了。

但发生的情况是,即使在 WPSite1(DiscourseConnect 提供程序)上登录后,当我点击像 https://discourse.example.com/session/sso?return_path=/g/private_group 这样的 URL 时,它会带我到 SSO WP 登录表单。

1 个赞

谢谢,Angus,

情况 2 是这种情况。
我将审查说明,但我相信一切都设置正确,因为 SSO 登录有效,问题在于登录页面未识别用户已通过身份验证。

1 个赞

@simon@angus,再次感谢,我找到了问题所在。

在查看 DiscourseConnect 配置时,我注意到 DiscourseConnect URL 设置为 https://mydomain.org,然后我查看了 Discourse WP 插件上的建议,它说要使用 https://www.mydomain.org……当我更新为 www 后,它就开始正常工作了。

谢谢。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.