递归模仿

大家好,

我为一位客户搭建了一个 Discourse 服务器,并允许他们创建测试账户。我知道这些账户在单点登录(SSO)实施后最终会被废弃。我用管理员账户 A 完成了所有设置,自定义了主题,并为各个分类编写了描述。

在设置好 DiscourseConnect(作为唯一的注册选项)后,我从另一个系统登录了我的管理员账户,并将该账户 B 授予了管理员权限。从那时起,我都使用账户 B 进行操作,因为我已经无法再登录账户 A 了。

后来,我偶然发现了“模拟登录”按钮,便产生了好奇。看起来,如果我能模拟账户 A,就不必删除它,从而可以继续编辑分类描述、常见问题解答(FAQ)等内容。于是我用账户 B 模拟了账户 A,进行了一系列测试编辑,一切都很顺利。

直到我好奇是否也能模拟论坛的机器人账户。于是,在仍然模拟账户 A(当时 A 是管理员)的情况下,我决定模拟账户 C。成功了,效果很好。于是我认真地退出了登录,继续我的一天。

现在,当我以账户 B 登录时,无法再模拟账户 A 或 C(模拟其他用户则没问题)。原本应该显示按钮的位置只显示“管理员和版主无法被删除”。

日志显示“B 模拟了 A”以及“A 模拟了 C”。

我不确定这是否应该提交为错误报告——因为我目前无法重现我的操作步骤——或者是否有简单的修复方法?

提前感谢,
Flo

嘿 Flo,欢迎加入社区 :waving_hand:t2:

模拟按钮仍然在,我使用的是最新版本。

是否可以通过 /users/admin-login 使用邮箱登录 Admin A 账户?这或许能帮你解开这个难题?

2 个赞

嗨,Gavin,

我如何通过界面查看当前版本?仪表板上显示上次更新日期为 8 月 3 日,但我找不到版本号。

谢谢

你好 JammyDoger,

我不知道有这个路由!这确实解决了绕过 DiscourseConnect 的问题,不过我还没能理清头绪。不过,用户 A 的“冒充”按钮是显示的,所以我推测他们目前并没有冒充任何人?

您可以查看源代码,这并不难找。

访问 /u/admin-login,将管理员账户的邮箱更改为可通过单点登录(SSO)登录的邮箱。您也可以通过 Rails 控制台修改该地址。

1 个赞

你好 Jay,

我刚才错误地认为,如果你故意向管理员隐瞒信息,那么这些信息就不会是公开的。那就用 2.8.0.beta4 吧。

关于你的第二个建议,我不想那样做,因为用户 A 在我的其他系统中没有对应的账户,不过任何用户都有可能在论坛上拥有账户。

现在可以注销 Admin A 账户,以确保其已重置为管理员身份,而非冒充他人吗?

(同时也请注销 Admin B,以防万一 :slightly_smiling_face:

你好 JammyDodger,

是的,我已经从两个账号都登出,然后重新登录了 B,但依然没有成功 :upside_down_face:

yours 看起来像这样吗?

我这小小的知识储备也就到这儿了。:slightly_smiling_face: 我不确定管理员是否能冒充其他管理员(我以为只有开发者可以)。你把这个列表里的管理员 B 移除了吗?

希望有更渊博的人能补充一些更有价值的信息。:slightly_smiling_face::crossed_fingers:

1 个赞

你好,Gavin,

我没有看到“版本”部分。

那么您的账户不是管理员。

建议您按照 @JammyDodger 提到的那样,将您的账户 B 添加到应用的 yml 文件的 Dev 部分。

  ## TODO: 列出以逗号分隔的电子邮件,这些用户将在首次注册时成为管理员和开发者
  ## 示例 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'gavin@truecode.co.za'
2 个赞

看来你最终还是走对了方向,谢谢!
非常感谢你的反馈 ˆˆ

2 个赞

成功了, impersonate 按钮回来了!谢谢 Gavin ˆˆ

不过我还是没看到仪表板中的“版本”部分,而且仍然不清楚我当初为何能够 impersonate 某人。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.