大家好,
我们的 Discourse 实例中有一个私有分类,它被限制给特定的用户组。我们创建了一个链接,以便新用户在通过 OAuth2 登录后可以访问此分类。
然而,当尚无 Discourse 账户的新用户点击该链接时,他们会看到以下消息:
“抱歉,此论坛的访问权限仅限于邀请。”
因此,他们无法进入 OAuth2 登录流程,也无法访问该分类。现有用户可以正常访问。
我们希望新用户能够通过 OAuth2 登录,然后被添加到相应的用户组,以便他们可以看到该分类——但目前 Discourse 在登录前就阻止了他们。
我们需要帮助解决的问题
我们很感谢关于正确配置 OAuth2 + 基于用户组的分类限制的任何指导。

您好——能否请您检查一下 Discourse 站点设置中的“仅限邀请”选项并禁用它(如果已启用)?
禁用“仅限邀请”将允许新用户使用 OAuth2 登录或注册。
一旦他们登录,您就可以使用您的群组成员资格规则(自动化或手动分配)授予他们访问私有类别的权限。
1 个赞
我禁用了“仅限邀请”并为私有类别创建了一个群组邀请链接。当新用户点击该链接时,他们会通过我们的 OAuth2 单点登录(SSO)登录,但他们不会自动添加到群组中——因此他们仍然看不到该类别。
需要帮助了解为什么群组邀请链接不会将新的 SSO 用户添加到群组中,以及如何确保使用邀请链接的新 OAuth2 SSO 用户被自动添加。
请查看此处的讨论:
并检查您的日志中“添加群组”、“群组”和“移除群组”字段中的值?
我们最近遇到了类似的问题,通过禁用 OpenID Connect 插件设置中的“OpenID Connect 按电子邮件匹配”选项解决了这个问题。
我们情况下的主要区别在于,我们使用自托管的 Authentik 实例作为单点登录 (SSO),并且我们有一个 Authentik 网页钩子 (webhook),一旦设置了新的 Authentik 帐户,就会在 Discourse 中创建相应的帐户。在此网页钩子中,会创建 Discourse 帐户,然后根据 Authentik 帐户有权访问的组将其添加到 Discourse 组中。
我们设置的其他相关设置(与默认值不同)如下:
在“登录设置”中:
- 需要登录 (Login required)
- 仅限邀请 (Invite only)
- 启用本地登录 (Enable local logins) (已禁用)
- 启用通过电子邮件进行本地登录 (Enable local logins via email) (已禁用)
- 启用注册号召性用语 (Enable signup CTA) (已禁用)
- 身份验证跳过创建确认 (Auth skip create confirm) (已启用)
在“OpenID Connect 插件设置”中:
- OpenID Connect 授权范围 (OpenID Connect authorize scope) (email openid profile)
- OpenID Connect 按电子邮件匹配 (OpenID Connect match by email) (已禁用)
1 个赞