# 为匿名和登录用户设置基于组的细粒度权限

**URL:** https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273
**Category:** Announcements
**Tags:** groups
**Created:** [2026年五月13日 01:18 UTC](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273 "2026-05-13T01:18:57Z")
**Posts on this page:** 1
**Showing post:** 12

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [2026年七月6日 05:54 UTC](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273/12 "2026-07-06T05:54:07Z")

</div>

@Noble_Fish ，这是基于 AI 生成的按组设置列表，包含每个设置的用途，以及匿名用户/已登录用户如何受该设置影响。请注意，虽然我有相当把握认为这是正确的，但就像所有 AI 生成的内容一样，最好还是你自己核实一下事实。

我认为最有趣的列是“`everyone` 在更改前是否也包含 `anonymous_users`？”，如果这里是 `Yes`，那就意味着在应用即将进行的更改之前，`everyone` 指的是已登录用户和匿名用户。

如你所见，其中只有少数几个，因此管理员只需要在站点设置中明确将 `anonymous_users` 添加到这些设置中：

- `hidden_post_visible_groups` - 我实际上需要修改这一项以允许 `anonymous_users`，当前的代码对于即将进行的更改来说并不完全正确。
- `lazy_load_categories_groups` - 我也需要修复这一项，它执行了一个多余的 `everyone` 检查，而 `user.in_any_groups?` 内部已经完成了这个检查。
- `styleguide_allowed_groups` - 这一项目前可以正常工作，但我会稍微调整一下。

当即将进行的更改变为永久时，将仅使用 `logged_in_users` 和 `anonymous_users` 组，而 `everyone` 将被删除。

* * *

| 设置项 | 描述 | `logged_in_users` 是否适用？ | `anonymous_users` 是否适用？ | `everyone` 在更改前是否也包含 `anonymous_users`？ | 代码查找结果 |
| --- | --- | --- | --- | --- | --- |
| `whispers_allowed_groups` | 允许指定组的成员在主题内进行私密通信。 | 否 | 否 | 否 | 不允许 `everyone`、`logged_in_users` 和 `anonymous_users`；运行时还期望具体的组/成员资格。 |
| `hidden_post_visible_groups` | 允许这些组的成员查看隐藏帖子。工作人员用户始终可以查看隐藏帖子。 | 是 | 否 | 是 | 在拒绝匿名用户之前检查 `everyone`；否则使用 `in_any_groups?`。 |
| `about_page_hidden_groups` | 不在 `/about` 页面上显示特定组的成员。 | 否 | 否 | 否 | 使用 `group_users`；伪组没有成员行。 |
| `about_page_extra_groups` | 在关于页面上版主下方显示的组。 | 否 | 否 | 否 | 加载具体组及其成员以进行显示。 |
| `anonymous_posting_allowed_groups` | 允许启用匿名发帖的组。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行已登录用户门控；不允许 `anonymous_users`。 |
| `personal_message_enabled_groups` | 允许这些组中的用户创建个人消息。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行已登录用户门控；不允许 `anonymous_users`。 |
| `shared_drafts_allowed_groups` | 允许这些组中的用户查看和编辑共享草稿。 | 是 | 否 | 否 | Guardian/用户门控；不允许 `anonymous_users`。 |
| `here_mention_allowed_groups` | 允许提及 `@here` 的组。 | 是 | 否 | 否 | 需要已认证用户；不允许 `anonymous_users`。 |
| `approve_unless_allowed_groups` | 不属于这些组的用户发布的帖子必须经过审核。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行用户门控；不允许 `anonymous_users`。 |
| `approve_new_topics_unless_allowed_groups` | 不属于这些组的用户创建的新主题必须经过审核。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行用户门控；不允许 `anonymous_users`。 |
| `skip_review_media_groups` | 这些组之外的用户发布的包含嵌入媒体的帖子将发送进行审核。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行用户门控；不允许 `anonymous_users`。 |
| `content_localization_allowed_groups` | 允许更新本地化内容的组。 | 是 | 否 | 否 | Guardian/用户门控；不允许 `anonymous_users`。 |
| `email_in_allowed_groups` | 允许通过电子邮件发布新主题的组。 | 是 | 否 | 否 | 电子邮件发送者用户门控；不允许 `anonymous_users`。 |
| `view_raw_email_allowed_groups` | 可以查看原始传入电子邮件内容的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `uploaded_avatars_allowed_groups` | 指定允许上传自定义头像的组。 | 是 | 否 | 否 | 当前/目标用户门控；不允许 `anonymous_users`。 |
| `create_topic_allowed_groups` | 允许创建新主题的组。 | 是 | 否 | 否 | 需要用户并使用 `in_any_groups?`；不允许 `anonymous_users`。 |
| `topic_timers_allowed_groups` | 允许设置主题计时器的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `edit_wiki_post_allowed_groups` | 允许编辑标记为 wiki 的帖子的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `edit_post_allowed_groups` | 允许编辑帖子的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `self_wiki_allowed_groups` | 允许这些组中的用户将自己的帖子设为 wiki。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `send_email_messages_allowed_groups` | 允许通过电子邮件发送个人消息的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `flag_post_allowed_groups` | 允许标记帖子的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `post_links_allowed_groups` | 允许在帖子中包含链接的组。 | 是 | 否 | 否 | 需要已认证用户；不允许 `anonymous_users`。 |
| `embedded_media_post_allowed_groups` | 这些组中的用户允许在帖子中嵌入媒体项目。 | 是 | 否 | 否 | 操作用户门控；不允许 `anonymous_users`。 |
| `profile_background_allowed_groups` | 允许上传个人资料背景的组。 | 是 | 否 | 否 | 用户门控；不允许 `anonymous_users`。 |
| `user_card_background_allowed_groups` | 允许上传用户卡片背景的组。 | 是 | 否 | 否 | 用户门控；不允许 `anonymous_users`。 |
| `invite_allowed_groups` | 允许邀请用户的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `ignore_allowed_groups` | 允许忽略其他用户的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `delete_all_posts_and_topics_allowed_groups` | 允许删除其他用户创建的帖子和主题并查看已删除内容的组。 | 是 | 否 | 否 | Guardian/当前用户门控；不允许 `anonymous_users`。 |
| `edit_all_topic_groups` | 允许该组中的用户编辑其他用户的主题标题、标签和类别。 | 是 | 否 | 否 | 原始分割后使用 `in_any_groups?`；不允许 `anonymous_users`。 |
| `edit_all_post_groups` | 允许该组中的用户编辑其他用户的帖子。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行用户门控；不允许 `anonymous_users`。 |
| `change_post_ownership_allowed_groups` | 允许这些组中的用户更改帖子所有权。 | 是 | 否 | 否 | 当前用户门控；不允许 `anonymous_users`。 |
| `cross_origin_opener_unsafe_none_groups` | 隐藏的 COOP 覆盖组；匹配的用户将获得 `Cross-Origin-Opener-Policy: unsafe-none`。 | 是 | 否 | 否 | 需要 `current_user.present?`；匿名选择在运行时没有影响。 |
| `user_api_key_allowed_groups` | 生成用户 API 密钥所需的组成员资格。 | 是 | 否 | 否 | 当前用户门控；不允许 `anonymous_users`。 |
| `create_tag_allowed_groups` | 允许创建标签的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `edit_tags_allowed_groups` | 允许编辑标签、标签描述和标签同义词的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `tag_topic_allowed_groups` | 允许为主题添加标签的组。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `pm_tags_allowed_for_groups` | 允许包含的组成员标记任何个人消息。 | 是 | 否 | 否 | Guardian 用户门控；不允许 `anonymous_users`。 |
| `lazy_load_categories_groups` | 仅为这些组的用户懒加载类别信息。 | 是 | 是 | 是 | 显式的 `everyone` 检查加上 guardian `in_any_groups?`；`anonymous_users` 具有实际意义。 |
| `chat_allowed_groups` | 这些组中的用户可以聊天，但匿名用户只有在添加到该设置时才能查看聊天。 | 是 | 是 | 否 | 已登录聊天使用 `in_any_groups?`；匿名公共聊天显式检查 `anonymous_users`。 |
| `direct_message_enabled_groups` | 允许这些组中的用户创建用户间个人聊天。 | 是 | 否 | 否 | 已登录聊天 guardian 门控；没有有意义的匿名 DM 路径。 |
| `chat_pinning_messages_allowed_groups` | 这些组中的用户允许固定聊天消息。 | 是 | 否 | 否 | 需要聊天访问权限/当前用户；没有匿名固定路径。 |
| `chat_message_flag_allowed_groups` | 这些组中的用户允许标记聊天消息。 | 是 | 否 | 否 | 用户门控；匿名路径被周围的聊天权限阻止。 |
| `no_ads_for_groups` | 不向这些组中的用户显示广告。 | 是 | 否 | 否 | 仅添加到 `current_user` 序列化器；没有匿名当前用户负载。 |
| `adsense_exclude_groups` | 不会向这些组的成员显示广告。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行当前用户广告标志；没有匿名当前用户负载。 |
| `dfp_exclude_groups` | 不会向这些组的成员显示广告。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行当前用户广告标志。 |
| `amazon_exclude_groups` | 不会向这些组的成员显示广告。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行当前用户广告标志。 |
| `carbonads_exclude_groups` | 不会向这些组的成员显示广告。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行当前用户广告标志。 |
| `adbutler_exclude_groups` | 不会向这些组的成员显示广告。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行当前用户广告标志。 |
| `composer_ai_helper_allowed_groups` | 这些组中的用户将在编辑器中看到 AI 助手按钮。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行已登录 AI 助手门控。 |
| `post_ai_helper_allowed_groups` | 允许访问帖子中 AI 助手功能的用户组。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行已登录 AI 助手门控。 |
| `ai_pm_summarization_allowed_groups` | 允许在个人消息中创建和查看摘要的组。 | 否 | 否 | 否 | 使用原始 `user.group_ids`，因此伪组不匹配。 |
| `ai_bot_debugging_allowed_groups` | 允许这些组查看显示原始 AI 请求和响应的调试按钮。 | 是 | 否 | 否 | 对匿名用户显式返回 false，然后使用 `in_any_groups?`。 |
| `ai_bot_allowed_groups` | 当 GPT Bot 有权访问个人消息时，它将回复这些组的成员。 | 是 | 否 | 否 | 主要门控使用 `in_any_groups?`；一个游乐场路径使用原始 `group_ids`。 |
| `ai_bot_public_sharing_allowed_groups` | 允许这些组通过唯一链接与公众共享 AI 个人消息。 | 是 | 否 | 否 | 对匿名用户显式返回 false，然后使用 `in_any_groups?`。 |
| `assign_allowed_on_groups` | 这些组中的用户允许分配主题。 | 否 | 否 | 否 | 使用原始 `user.group_ids`/`GroupUser`；伪组没有行。 |
| `discourse_post_event_allowed_on_groups` | 允许创建事件的组。 | 否 | 否 | 否 | 原始 `groups.where(id: ...)`；`everyone` 是特殊处理的，但 `logged_in_users` 不是。 |
| `discourse_kanban_manage_board_allowed_groups` | 允许创建和配置看板板的组。 | 是 | 否 | 否 | Guardian 使用 `in_any_groups?`，但写控制器需要登录。 |
| `create_policy_allowed_groups` | 向帖子添加策略所需的组成员资格。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行帖子/用户门控。 |
| `flag_posts_voting_comments_allowed_groups` | 允许标记帖子投票评论的组。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行用户门控。 |
| `allow_solved_in_groups` | 允许在这些组的组消息中标记解决方案。 | 无用户门控 | 无用户门控 | 无用户门控 | 匹配 PM `topic.allowed_groups`，而不是当前用户成员资格。 |
| `accept_all_solutions_allowed_groups` | 允许在任何主题上接受解决方案的组。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行已认证/当前用户门控。 |
| `discourse_templates_groups_allowed_private_templates` | 允许使用私有模板的组。 | 否 | 否 | 否 | 原始 `GroupUser.exists?`；仅 `everyone` 是特殊处理的。 |
| `poll_create_allowed_groups` | 允许创建投票的组。 | 是 | 否 | 否 | 通过 `in_any_groups?` 进行操作/当前用户门控。 |
| `styleguide_allowed_groups` | 将样式的可见性限制为所提供组的成员。 | 是 | 是 | 是 | 控制器显式处理 `anonymous_users`；在更改之前也允许通过 `everyone` 进行匿名访问。 |

---

_[View the full topic](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273)._
