dbwhite
(Dwight Bumgarner)
1
我正在通过 WP Discourse 插件将 Discourse 与 Wordpress 集成,并使用 Wordpress 作为 Discourse Connect 提供商,但遇到了一个问题:未经验证的用户访问 Discourse 实例并单击任何需要登录的按钮会导致他们陷入无限重定向循环。
期望的行为是:用户单击 Discourse 登录按钮 → 用户被重定向到 Wordpress 登录页面 → 用户进行身份验证并被重定向回他们之前的 Discourse 页面。如果用户已经经过身份验证并访问 Discourse 实例,则目前没有问题。当未经验证的用户首先访问 Discourse 实例时,会出现此错误。
当前的行为是:用户单击 Discourse 登录按钮 → 用户被重定向到 https://[discourse-instance]/session/sso?return_path=%2Ft%2F[用户之前的 Discourse 页面]%2F16 → 用户被重定向到 https://[wordpress-site]/?sso=[SSO token]%3D%3D&sig=[Signature token] → 用户被重定向到 https://[wordpress-site]/?sso=[SSO token]%3D%3D&sig=[Signature token]&redirect_to=%2F%3Fsso%[SSO token]%253D%253D%26sig%3D[Signature token] → 然后循环递归地继续,直到浏览器抛出“重定向过多”错误
我还没有找到一个解决此问题的帖子,最接近的是
但我们启用了所有地方的 SSL,并且此问题在所有浏览器中都会出现。有什么建议可以解决此问题吗?
david
(David Taylor)
2
Chrome 97 发布时存在一个与重定向期间 Cookie 处理相关的错误,已知该错误在某些情况下会破坏 DiscourseConnect。在等待 Google 推出修复程序的同时,我们在 Discourse 中添加了一个变通方法。将您的 Discourse 网站升级到最新版本应该可以解决此问题。您可以尝试一下,然后告知我们是否有效?
(变通方法已在此提交中添加)
3 个赞
dbwhite
(Dwight Bumgarner)
3
感谢您的回复,我刚检查过以确保我们使用的是最新版本,但不幸的是错误仍然存在。我们的论坛托管在 Discourse 上,所以它应该会定期自行更新。错误与之前一样,还有什么我应该尝试的吗?托管 Discourse 的设置是否可能导致此问题?
1 个赞
angus
(Angus McLeod)
4
嘿 @dbwhite,请您:
- 在 WP Discourse 的“DiscourseConnect”设置中启用“详细的 DiscourseConnect 日志”
- 重现问题
- 前往 WP Discourse 的“日志”并“下载”它们
然后将日志私信给我,我会仔细查看具体情况。请注意,日志不包含任何个人身份信息或秘密。
2 个赞
simon
5
@angus、@dbwhite,这个问题的可能原因可能是WordPress站点正在使用Woocommerce。Woocommerce会添加一个登录重定向,这可能会导致DiscourseConnect出现问题。这些重定向可以通过安装和激活https://github.com/scossar/wp-discourse-woocommerce-support来覆盖,或者通过将该插件自述文件中提供的代码片段添加到站点的themetheme中来覆盖。
这里描述的重定向问题似乎与我过去在其他Woocommerce站点上遇到的情况类似。在那些情况下,通过安装我链接的WordPress插件解决了问题。
如果这是问题的原因,我想我们是否应该考虑直接在WP Discourse插件中添加Woocommerce支持。
4 个赞
jord8on
(Jordan)
6
这将非常有帮助。
我没有遇到 OP 所描述的确切问题,但在用户登录后将他们重定向回 Discourse 论坛的相应位置时,我遇到了困难 
simon
7
安装并激活 WP Discourse WooCommerce Support 插件是否能为您解决此问题?
dbwhite
(Dwight Bumgarner)
8
在此发布一项更新,事实证明我们使用的其中一个插件干扰了 wp_login_url() WordPress 函数的返回值。移除该插件后,一切都按预期运行!
1 个赞
angus
(Angus McLeod)
拆分了此话题
9