使用 WordPress 和 Discourse 作为提供者的 SSO 登录流程与逻辑

万分感谢 @simon 协助我完成设置,现在我终于能在我的 WordPress 页面上看到“使用 Discourse 登录”选项了。接下来我需要理清思路,弄清楚背后的逻辑和登录流程,以便让会员前往 WordPress 进行支付时更加便捷。

目前我的页面登录流程如下:

在 WordPress 登录 > 选择“使用 Discourse 登录” > 进入 Discourse 登录页面 > 登录成功 > 重定向回 WordPress 网站。

如果我想实现以下设置,请问该如何操作?

  1. 我已经完成了当会员在 WordPress 使用 Discourse 登录并跳转回 WordPress 的设置。但如果我想实现另一种情况:当会员在 Discourse 使用 Discourse 登录并跳转回 Discourse 时,后端也能自动在 WordPress 网站上完成登录,该如何设置?

  2. 禁用我 WordPress 上所有原有的登录方式,仅保留 Discourse 登录方式。

您可以在 Discourse 论坛中添加一个类似于以下的登录链接:

<a href="http://example.com/?discourse_sso=1&redirect_to=http://discourse.example.com">登录 WordPress 并返回 Discourse</a>

该链接应指向您 WordPress 站点的根 URL。您需要在 URL 中设置 discourse_sso=1 查询参数。redirect_to 参数应设置为您希望重定向用户的 URL。

您可以通过重定向将用户导向 WordPress 站点或 Discourse。我认为在大多数情况下,将用户重定向到 WordPress 站点比重定向到 Discourse 更有用。例如:

<a href="http://example.com/?discourse_sso=1&redirect_to=http://example.com/shop">从 Discourse 帖子登录 WordPress</a>

这可以实现,但您需要小心,以免因任何意外情况将自己锁在 WordPress 之外。一种可行的方法是将 WordPress 的 /wp-login.php 页面设置为仅允许知晓密码的 WordPress 站点管理员访问。