0

我有一个带有 User 模型和 Sorcery 的传统 Rails 4 应用程序进行身份验证。User 模型有一个 'admin' 标志。实现管理员临时成为另一个用户(以便查看用户看到的内容以帮助调试问题)然后重新成为他们原来的、启用管理员的用户的最佳方法是什么?

4

3 回答 3

1

这是一个实现:

http://robots.thoughtbot.com/how-to-masquerade-as-another-user-to-see-how-they-use-yo

我想这就是你要找的

于 2014-07-25T09:25:38.747 回答
0

我不知道 Rails,但在 Unix 下,需要允许您的可执行文件在用户模式之间切换。这是通过在您的可执行文件上设置“s”位并将所有者和/或组设置为执行您希望应用程序能够执行的任何操作所需的内容来完成的。(即大多数情况下,您使用 root 作为所有者,使用 srwxr-xr-x 作为权限,即 4755 作为模式编号)。

一旦你有了它,你的应用程序就可以使用该功能setuid(<uid>)。如果您使用 root,则 <uid> 将为 0(零)。

在 Linux 下,您有seteuid(),setfsuid()setreuid()

为了确保您做的是正确的事情,我建议您阅读相应的手册页。

于 2014-03-29T04:02:14.890 回答
0

我对这件事没有经验,但也许你可以在你的用户模型中添加一个超级用户标志。如果您是超级用户,您可以调整管理员标志。超级用户的唯一目的就是能够关闭或打开管理员权限。现在,您可以在用户或管理员之间切换,并查看用户看到的内容。完成后,您启用管理员并恢复您的管理界面。

这可行,但我不知道它是否是您用例的最佳解决方案。这里只是理论。:)

于 2014-03-29T08:01:26.223 回答