模拟用户并返回管理员用户

:bookmark: 本指南介绍如何在 Discourse 中模拟用户并返回管理员账户。这在需要排查特定用户遇到的问题或验证其权限时非常有用。

:person_raising_hand: 所需用户等级:管理员

管理员可根据需要选择模拟其他用户。当成员遇到异常行为,或您需要检查其权限时,此功能非常有用。模拟其他用户相当于以该用户身份登录。本文档将指导您以管理员身份模拟用户,并说明如何返回管理员账户。

模拟用户

  1. 导航至侧边栏的 管理员 部分,选择 用户

  2. 查找并选择您要模拟的用户个人资料。

  3. 点击右上角的 管理员

  4. 在底部选择 模拟 按钮
    image

    一旦您模拟了该用户,您将不再以管理员身份登录。您将体验与用户完全相同的 Discourse 界面。

:warning: 模拟用户并非透明操作——它会为该用户创建一次登录访问记录,并重置任何已处理的通知标志。建议告知用户已执行了模拟操作。

结束模拟会话

方法一:适用于不频繁使用的情况

要停止模拟并返回您的管理员账户,只需从被模拟的用户账户注销,然后重新以管理员身份登录。

:information_source: 在私密/无痕窗口中登录并进行模拟,可避免需要在主浏览器会话中重新登录。只需关闭无痕窗口即可继续操作!

方法二:如果您经常模拟用户,推荐此方法

启用 impersonate_without_logout 设置后,在模拟用户时,界面顶部会显示一个持久横幅,其中包含一个可立即结束会话并返回管理员账户的按钮。

image

这使得重复的模拟工作流程更加安全高效,尤其适用于支持和质量保证(QA)场景。

此外,隐藏站点设置 experimental_impersonation_time_limit_minutes 可用于定义模拟会话的最长持续时间(默认:15 分钟)。一旦达到此时间限制,会话将自动终止,从而增加一层安全保障。

启用 impersonate_without_logout

推荐通过 管理员 → 即将进行的更改/admin/config/upcoming-changes)启用此功能,可为所有工作人员或特定组开启该选项。

对于 自托管 站点,也可以通过 Rails 控制台启用:

SiteSetting.impersonate_without_logout = true
SiteSetting.experimental_impersonation_time_limit_minutes = 15
40 个赞

值得注意的是,冒充用户并不透明——它会为该用户创建一个已记录的访问,并重置任何已处理的通知标志。最好告知任何真实用户正在进行此操作。

4 个赞

我也遇到了这个问题。我们至少可以在“模拟”按钮上添加一个确认对话框吗?目前它会立即开始模拟,而不会警告用户潜在的风险,特别是它会创建一个已记录的访问。

它附近的“删除用户”等其他按钮确实有确认对话框。作为用户,我希望“模拟”按钮也能像其他按钮一样打开一个对话框。

image

6 个赞

我甚至都没注意到缺少一个确认对话框,但是的,那将是一个很好的地方来警告你即将成为该用户并留下痕迹——而不仅仅是在后台随意查看而没有影响。

5 个赞

我认为您现在可以在 /admin/config/upcoming-changes 启用此设置。

2 个赞