benbowler
(Ben Bowler)
1
我部署了一个新的 WordPress 插件,它依赖 Discourse 的 SSO 功能,但在生产环境的站点上出现了一个奇怪的 bug。
在本地环境中,我可以登录并使用 redirect_url 参数成功返回到目标页面。然而,在生产环境中,SSO 仅在 redirect_url 为 wp-admin 的 URL 时才能正常工作,例如:
SSO 工作正常…
https://www.example.com/core/wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fcore%2Fwp-admin%2F&reauth=1
SSO 未能成功认证,只是返回到登录/发布页面
https://www.example.com/core/wp-login.php
您之前遇到过类似的问题吗?有什么建议可以排查吗?如果问题持续存在,我可能得自己构建一个重定向机制来捕获 wp-admin 的跳转。
我相当确信,这里要么是反向代理配置错误,要么就是类似的花招。请问您是否在使用 Cloudflare?
benbowler
(Ben Bowler)
3
是的,是 Cloudflare。我们可以在 Cloudflare 中测试哪些设置?
benbowler
(Ben Bowler)
5
哈哈,这可不是我能决定的,网站主要使用 Cloudflare 作为缓存。我得研究一下反向代理,看看能不能调整 CF 里的某些设置。
pfaffman
(Jay Pfaffman)
6
已有数十个关于 Cloudflare 优化引发问题的讨论帖。你可以将 Cloudflare 用作 CDN,并配置 Discourse 仅将通过 Cloudflare 可缓存的内容进行重定向。
你也可以暂时禁用该优化,看看是否能解决问题。
只需在 Discourse 中通过页面规则禁用 Cloudflare 的“性能”和“Rocket Loader
benbowler
(Ben Bowler)
8
是的,这是一系列奇怪问题的混合体,部分原因似乎也与 WordPress 安装目录有关。目前我编写了一个临时解决方案,它总是重定向到 /core/wp-admin,然后会有一个最终的 ?final_redirect_url 参数,由我自定义的钩子捕获,并执行相应操作将我们带回目标位置。
simon
9
看起来您正在使用 WP Discourse – WordPress plugin | WordPress.org SSO 客户端选项(Discourse 作为 SSO 提供商)。您能确认一下是否如此吗?