# 是否可以通过SSO集成生成受限内容的预览（Drupal）？

**URL:** <https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115>\
**Category:** Support\
**Created:** [2020 年12 月 23 日 15:02 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115 "2020-12-23T15:02:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

作者： ![aaronbauman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaronbauman/32/204191_2.png) [@aaronbauman](https://meta.discourse.org/u/aaronbauman)\
发布日期： [2020 年12 月 23 日 15:02 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/1 "2020-12-23T15:02:55Z")

</div>

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

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

场景：

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

问题：

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

期望的解决方案：

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

---

<div class="post-metadata">

作者： ![JonathanShaw](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jonathanshaw/32/532672_2.png) [@JonathanShaw](https://meta.discourse.org/u/JonathanShaw)\
发布日期： [2020 年12 月 23 日 15:12 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/2 "2020-12-23T15:12:28Z")

</div>

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

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

无论哪种情况，如果能将其转化为 Discourse 访问权限问题，处理起来都会更容易。你可以根据 Drupal 角色自动分配 Discourse 用户组，通过 Drupal 的 [Discourse SSO](https://meta.discourse.org/t/13045?silent=true) 模块应该不难实现。

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

---

<div class="post-metadata">

作者： ![JonathanShaw](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jonathanshaw/32/532672_2.png) [@JonathanShaw](https://meta.discourse.org/u/JonathanShaw)\
发布日期： [2020 年12 月 23 日 15:17 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/3 "2020-12-23T15:17:21Z")

</div>

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

---

<div class="post-metadata">

作者： ![aaronbauman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaronbauman/32/204191_2.png) [@aaronbauman](https://meta.discourse.org/u/aaronbauman)\
发布日期： [2020 年12 月 23 日 15:22 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/4 "2020-12-23T15:22:39Z")

</div>

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

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

如果我理解正确的话：这可以通过 Discourse 端的自定义（通过脚本）和/或 Drupal 端的自定义访问逻辑来实现，对吗？

---

<div class="post-metadata">

作者： ![omarfilip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/omarfilip/32/208019_2.png) [@omarfilip](https://meta.discourse.org/u/omarfilip)\
发布日期： [2020 年12 月 23 日 15:48 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/5 "2020-12-23T15:48:27Z")

</div>

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

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

---

<div class="post-metadata">

作者： ![aaronbauman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaronbauman/32/204191_2.png) [@aaronbauman](https://meta.discourse.org/u/aaronbauman)\
发布日期： [2020 年12 月 23 日 17:21 UTC](https://meta.discourse.org/t/is-it-possible-to-generate-previews-of-restricted-content-drupal-via-a-sso-integration/174115/6 "2020-12-23T17:21:47Z")

</div>

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

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

感谢两位的回复。
