如何实现管理员暂时成为另一个用户?

时间:2014-03-29 03:54:52

标签: ruby-on-rails-4 sorcery

我有一个传统的Rails 4应用程序,其中包含用户模型和Sorcery进行身份验证。用户模型有一个' admin'旗。什么是实现管理员临时成为另一个用户的能力的最佳方式(为了查看用户看到的内容以帮助调试问题),然后又回到原来的,启用管理员的用户?

3 个答案:

答案 0 :(得分:1)

这是一个实现:

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

我认为这就是你要找的东西

答案 1 :(得分:0)

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

完成后,您的应用程序可以使用函数setuid(<uid>)。如果您使用root,则&lt; uid&gt;将是0(零)。

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

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

答案 2 :(得分:0)

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

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