未激活/已停用用户仍显示在公开用户页面中

我猜这是一个 bug,因为当你搜索已停用的用户时,他们不会出现在搜索结果中。

基本上,如果你访问这个页面:Discourse Meta 并滚动浏览,已停用的用户会显示出来……但如果你尝试搜索他们,他们却不会显示。(你也不能在帖子中 @ 他们。)

是否最好将所有未激活或已停用的用户从所有公共区域中隐藏?(我认为是的。)

这里所说的未激活/已停用成员,指的是那些尚未验证邮箱或需要重新验证邮箱的用户。

2 个赞

您的意思是非活跃用户:

  • 您无法提及他们,因为他们不活跃。
  • 您无法搜索他们,因为他们不活跃。

这可能是一个 bug,但我不认为是这样:

  • 非活跃用户仍然是用户表中的用户。
  • 有一个站点设置允许查看非活跃账户——默认关闭,但此处可能已启用:
    show inactive accounts
    我想知道 meta.discourse.org 是否因为托管客户而显示非活跃客户账户?
  • 有一个设置用于删除需要移除的非活跃用户——默认时间为两年:
    clean up inactive users after days
5 个赞

已关闭,但它们仍然显示。

我猜测其行为是它们仍会在管理员控制面板中显示,但不会公开显示。很多时候,垃圾邮件发送者会用网址作为名称或个人资料详情(有时甚至是色情内容等)注册此类账户。

1 个赞

“显示非活跃账户”站点设置仅适用于非工作人员用户。如果该设置被禁用(默认情况下为禁用状态),则普通用户将无法查看已停用用户的用户卡片或个人资料页面。不过,工作人员用户仍然可以查看用户卡片和个人资料页面。

无论是否禁用“显示非活跃账户”站点设置,已停用的用户都会出现在您的公开用户目录中。

3 个赞

Simon,这是否同时适用于新注册的未验证成员以及手动停用的成员?

有时,垃圾邮件发送者、网络喷子或恶意行为者会注册使用 URL 作为用户名或其他个人资料信息的账户。

是否可以通过主题组件或其他方式轻松地将用户从公开用户目录中隐藏?(我还在了解相关内容,目前还不确定。)我查看了 CSS,但已停用成员所在的行并没有应用特殊的类。能否添加这样的功能?

1 个赞

这是不正确的。已停用的用户不会立即从用户目录中移除,但应在刷新用户目录的作业运行时被移除。该作业每天运行一次。

向目录中添加和移除用户的代码会检查用户是否处于“活跃”状态。这意味着,曾经在您的站点上活跃过的非活跃用户,应在其被停用后的一天内从用户目录中移除。而那些从未在您的站点上活跃过的用户(例如,注册后未响应激活邮件的用户)则根本不应出现在用户目录中。

对于启用了“必须批准用户”站点设置的站点,未获批准的用户不会被添加到用户目录中。

如果您在站点上发现的情况与此不符,请告诉我。

4 个赞

啊,谢谢,这说得通,Simon。

在我的开发环境上似乎没有生效(不过我只是在需要时才运行服务器),但我刚刚在正式站点上创建了一个测试,看看效果如何,然后向你反馈 :smiley:

1 个赞

成功了 :smiley::该账户在一天左右后从列表中消失了。

关于手动停用用户,有一个快速问题:他们是否会受到与标准未激活用户相同的规则约束?具体来说,如果他们在 30 天内未重新激活账户(我认为这是新账户验证电子邮件的标准允许时间),他们是否会被从数据库中删除?

2 个赞

好问题,@eviltrout 有人能检查一下这个逻辑吗?我知道对于新注册用户来说这是对的——因为如果新用户在注册后 7 天内懒得激活邮箱,那他们就不值得关心了——但对于手动停用账户的情况,我就不确定了。

2 个赞

我检查了逻辑,如果满足以下条件,用户将在 clean_up_inactive_users_after_days 天后被删除:

  • 他们从未发布过任何内容
  • 他们的信任等级为 TL0
  • 他们不是工作人员

因此,回答您的问题:是的,手动停用的用户会被移除,但前提是他们没有发布过任何内容或获得任何信任等级。

5 个赞

那么,停用用户具体会产生什么效果?系统会通知用户其账户已被停用吗?是否会限制其使用,直到他们重新激活?他们是否需要自行重新激活账户?

1 个赞

这会阻止用户登录,直到他们回复由 Discourse 发送的激活邮件。如果用户尝试登录,他们将看到类似以下的提示:

请注意,停用用户不会自动触发向该用户发送激活邮件。您可以通过点击其管理页面“已激活”部分中显示的“发送激活邮件”按钮,来触发向用户发送激活邮件。此外,当用户尝试登录网站时,他们也可以从显示的提示中点击“重新发送激活邮件”按钮来触发激活邮件的发送。

4 个赞