我有一个Django应用程序。当以管理员用户身份登录时,我希望能够在URL中传递一个秘密参数,并使整个站点的行为如同我是另一个用户一样。
假设我有一个URL/my-profile/
,它显示了当前登录的用户配置文件。我想做一些类似/my-profile/?__user_id=123
的事情,让底层视图相信我实际上是ID为123的用户(因此呈现的用户配置文件)。
我为什么要那样?
只是因为它更容易重现某些只出现在单个用户帐户中的错误。
我的问题:
实现这样的东西最简单的方法是什么?
做这件事时,我应该考虑到什么安全问题吗?请注意,我(显然)只想为管理员用户提供此功能,而且我们的管理员用户可以完全访问源代码、数据库等。总之,这并不是真正的“后门”;它只是让访问用户帐户变得更容易。
看起来有相当多的人遇到了这个问题,并编写了可重用的应用程序来解决这个问题,至少有一些在django packages page for user switching中列出。写作时最活跃的似乎是:
我还没有足够的声誉来编辑或回复(我想),但我发现,虽然ionaut的解决方案在简单的情况下有效,但对我来说,一个更健壮的解决方案是使用会话变量。这样,即使AJAX请求也能得到正确的服务,而无需修改请求URL以包含GET模拟参数。
用法:
我用一个简单的中间件解决了这个问题。它还处理重定向(也就是说,在重定向期间保留GET参数)。这里是:
相关问题 更多 >
编程相关推荐