是否可以通过SSO集成生成受限内容的预览(Drupal)?

大家好,我是 Discourse 的新用户,第一次发帖,请大家多多关照!

有人能告诉我以下方案是否可行吗?

场景:

  • 拥有一个 Drupal 网站
  • Drupal 网站上存在需要用户认证才能访问的内容(“受限制的 Drupal 内容”)
  • Drupal 与 Discourse 之间已实现单点登录(SSO)

问题:

  • 当 Discourse 用户在帖子中粘贴指向“受限制的 Drupal 内容”的链接时,会收到 403 错误提示:“抱歉,我们无法生成该网页的预览,因为 Web 服务器返回了错误代码 403。帖子中将仅显示链接,而不会显示预览。”

期望的解决方案:

  • 当 Discourse 用户粘贴指向受限制内容的链接时,如果该用户拥有访问权限,则应自动生成预览。

你之前所说的内容存在歧义。你的意思是,当查看包含 Drupal 链接的 Discourse 帖子时,onebox 预览的显示应取决于:

  1. 查看者的 Drupal 访问权限;还是
  2. 创建者的 Drupal 访问权限

无论哪种情况,如果能将其转化为 Discourse 访问权限问题,处理起来都会更容易。你可以根据 Drupal 角色自动分配 Discourse 用户组,通过 Drupal 的 Discourse SSO 模块应该不难实现。

此外,你可能还需要在 Drupal 端定制一些访问逻辑,以确保 onebox 预览爬虫能够访问受限内容。

如果您想向部分观众展示内容而不对其他人展示,我怀疑您需要让内容通过某种脚本实现。如果内容取决于创作者而非观众,情况会简单得多。

感谢您的快速回复。我原本以为预览功能取决于 Discourse 帖子/评论创建者的权限,而不是 Discourse 查看者的权限。

我是将预览视为一个快照,该快照会被创建并作为静态 HTML 与帖子绑定,而不是一个动态小部件——我甚至都没考虑过这种可能性!

如果我理解正确的话:这可以通过 Discourse 端的自定义(通过脚本)和/或 Drupal 端的自定义访问逻辑来实现,对吗?

是否可以将 Drupal 设置为在登录/付费墙之前显示预览?

如果 Drupal 帖子的元属性可访问,那么单框显示应该可以正常工作。

在托管(非企业版)的 Discourse 产品中,onebox 似乎无法以支持此需求的方式进行自定义。

我认为,至少将元数据设为公开可访问,是解决这一问题的可行途径。

感谢两位的回复。