Tl0 > tl1: 发布错误“您无权查看请求的资源”

你好。这是我的第一篇帖子。

我是个老论坛用户,已经试用我们新安装的 Discourse 一个月了。我彻底爱上了它。

长话短说: 我调整了一些 tl0 / tl1 设置以适应我们的新用户引导流程。一切看起来都很顺利,但新升级的 tl1 用户在尝试在相应版块发布自我介绍时,却收到“您无权查看请求的资源”的错误提示。

可能与此相关? 之前,我曾将 tl0 组重命名为“wallflowers”(潜水者),因为我们将该组在单个分类中限制为只读。后来我们决定将该组名称改回“新用户”,但我仍在新用户列表中看到“wallflowers”(点击后会跳转到“新用户”组的设置页面)。搜索自定义文本中的“wallflowers”也没有任何结果。是不是有什么缓存问题?

这是我们正在构建的新用户引导流程:

  • tl0 / 新用户
    – 可阅读和回复“规则”主题
    – 必须进入 5 个主题、阅读 5 个主题,并累计停留 3 分钟

  • tl1 / 引导中
    – 获得访问“大厅”的权限
    – 必须进入 1 个主题、创建 1 个主题(自我介绍),并累计停留 5 分钟

另外值得一提的是,为了让新/测试用户能看到这些分类,我不得不赋予“wallflowers”组对这些分类的阅读和回复权限,尽管“新用户”组本来就已经拥有访问权限。感觉我像是进了糖果店的孩子,可能在某个地方造成了冲突。

这里有一组截图,希望能有所帮助。

感谢您的时间和关注。我对 Discourse 情有独钟,迫不及待想邀请团队其他成员加入,为我们的测试用户搭建更多内容。我们一定会做出很棒的东西。

嘿,Brian,欢迎!

我正在仔细查看你分享的截图,发现了一个有趣的地方。在第 2 页,我看到你被列为 trust_level_0 的“所有者”。这不应该发生……信任等级组是自动生成的,因此不会有所有者。那张截图显示的是你所有的组,还是仅前 8 个?

目前,由于 wallflowers(TL0)组在大厅(Lobby)分类下拥有创建、回复和查看权限,所以网站上的所有用户在该分类下都拥有完整权限。我理解这并非你的本意,可能只是用于测试,但如果一个 TL1 用户无法在此发帖,那很可能说明其他方面存在问题。


另外请注意,信任等级是层级化的——所有 TL4 成员同时也是 TL3、TL2、TL1 和 TL0 的成员;TL3 成员也是 TL2、TL1 和 TL0 的成员,依此类推。因此,如果你在某个分类的安全设置中添加了 TL0(wallflowers),就不需要再额外添加 TL1、TL2、TL3 和 TL4,除非你希望它们拥有不同的权限。

管理员用户的情况也类似。管理员组是一个自动生成的组,包含所有版主和管理员。因此,如果你在某个分类的安全设置中添加了管理员组,就无需再单独添加管理员和版主。


能否请你确认以下几点:

  • 组页面截图是否显示了所有组,而不仅仅是前 8 个。
  • 你的 Discourse 版本。
  • 你是否按照我们的官方安装指南进行了安装。
  • 你的测试用户是尝试创建新主题,还是回复已有主题?
  • 请从大厅的权限设置中移除管理员、成员、版主、onboarding、TL3 和 TL4,然后再次尝试发帖。

移除所有其他群组后问题已解决。我的测试用户现在可以成功发布新主题了。太棒了!

不过,“所有者”在

你能举个例子说明有哪些内容没有更新吗?TL 和分类其实没有直接关联,所以我想知道这里是否存在误解。

@HAWK,谢谢你的提问。

我可能用词不当。如果你看一下最后两张截图,那就是我想问的内容。

编辑分类,点击安全标签页。那些是用户组,对吧?即使只是自动的、基于信任等级(TL)的组?

我在自定义文本或设置中找不到“墙花”(wallflowers)或“入职引导”(onboarding) anywhere。我已经还原了所有关于信任等级名称、标签和/或用户头衔的更改。

所以,如果我的 TL1 是“trust-level-1”,为什么它没有出现在那个分类设置列表中?

是不是因为如果有一个用户拥有该标签,我就无法移除它?我在我的测试用户概览中只看到过“墙花”(wallflower)这个词。

完全怪我,我漏掉了最后一张截图。那确实是“安全”类别模态框中的组列表!

如果您已重命名该组,下拉菜单中应该会反映这一更改。您是否执行了硬刷新?(我这是在病急乱投医了。)

在浏览器中?是的。

有没有可能是 2016 年的这个旧 bug 在作祟?我看到的现象似乎就是这样。

例如,查看这个新用户,我发现他属于自动分组“wallflowers”。

当我点击该链接时,它带我到了这里(注意 URL):

但此时只有这些分组(注意:URL):

也许我只是真的把数据库惹毛了,或者类似的情况。

听起来和这个很相似 https://meta.discourse.org/t/can-not-add-category-security-for-new-group/126808/3 cc/@sam

确实听起来像是可能正在发生的情况。一夜之间,事情“神奇地”对齐了。

带 URL 的组:

组“trust_level_0”昨晚一直使用的是“wallflowers”,现在有了正确的 URL:

之前自动分配为“wallflowers”的用户,现在在个人资料管理中显示为“trust_level_0”:

分类安全设置的下拉菜单中不再显示“wallflowers”或“onboarding”组:

看来数据库中确实有某种机制会延迟某些更改?

感谢大家的帮助。这太棒了。

这看起来非常像用户目录更新延迟的情况。新用户不会立即显示,直到某个预定的每日例行程序运行……然后,他们终于出现了!

这是否意味着从一个信任等级(tl)自动提升到另一个信任等级不会立即生效?(我觉得应该是立即生效的。)

这里的问题已经有所演变。我的新用户现在确实只能看到计划中的那个分类,但根据我配置的规则,他们似乎仍未获得 tl1 的访问权限。

  1. 新用户注册,初始为 tl0
    – 仅能访问一个分类:规则
    – 必须进入 5 个主题
    – 必须阅读 3 分钟
  2. 用户应被提升至 tl1
    – 获得访问第二个分类的权限:大厅
    – 必须进入 1 个主题
    – 必须发布 1 个主题
    – 必须阅读 5 分钟

我邀请了一位测试用户,该用户按设计获得了“规则”分类的访问权限,但即使该用户已满足所有条件,其信任等级仍停留在 tl0。第二个分类(大厅)已配置为允许 trust_level_1 组拥有创建/回复/查看权限,但新用户却看不到该分类。

如果存在夜间运行的 cron 任务或其他类似机制,我可以去排查,但我需要确认这是否是预期行为,以便相应调整我们的入职计划。

有人能确认一下吗?先谢过。

@TGP
Brian,我在下方复制粘贴了来自我论坛的一篇帖子,其中几位新用户表示,他们在刚注册后不久并未出现在用户目录中。虽然他们未出现在“每周”列表中,但切换到“今天”时确实可见。当晚例行程序运行后,他们在目录的所有视图中都出现了。

[ 用户未显示在用户目录中 ]
[META]

由于论坛上线时间不足 24 小时,用户未出现在用户目录的任何搜索分类中,包括“周”、“月”、“季度”、“年”或“全部时间”。他们仅出现在“今天”记录中。

解决方案:等待 24 小时,让每日例行程序自动运行。之后用户应该会显示出来。

我查看了支持论坛,发现也有其他人遇到相同问题。解决方案同样是等待 24 小时,因为有一个每 24 小时运行一次的更新例行程序。

[注意:在原始帖子(解决方案)中我曾提到“24 小时”,但我们的例行程序似乎在当地时间晚上 11 点左右运行——不过我尚未确认具体时间。]

每个论坛的定时任务调度顺序都会不同,并且这种调度顺序会在一段时间内保持稳定!

TL0-1 每呃呃呃 15 分钟运行一次左右?而 1-2 和 2-3(以及 3-2)则是每天运行。

这与我目前的经验相符。感谢 Kane York。

有人知道是否有设置可以更改这种行为,或者这样做是否过于消耗资源?

提前致谢。