经过进一步研究,我在想是否有一种稍微不那么“黑客”的解决方案,即采用 @simon 在此帖子中描述的方法:Automatically login via SSO - #4 by simon
- 启用“SSO 允许所有返回路径”设置
- 在我的页面上添加一个隐藏的 iframe,加载
https://discourse.example.com/session/sso?return_path=path_to_mypage.html - 当用户已登录(无需交互,因为用户已通过 SSO 在父页面中登录到应用)且 iframe 被重定向到
mypage.html时,它可以通过 postMessage() 向父页面通信用户已登录 Discourse,并触发脚本嵌入论坛主题。
这仍然看起来不是理想的解决方案,因为它会产生额外的往返(上述过程仅在用户尚未登录 Discourse 时才有必要)。
在我看来,理想的解决方案是, somehow 能够在通过 SSO 重定向时保留嵌入页面的 referer URL。
编辑:我在此帖子中实现了上述改进后的“黑客”方案,至少可以说,它比我在原帖中描述的原版“黑客”方案效果好得多。