如何连接自己作为其他用户?

时间:2019-05-15 08:54:42

标签: python django python-3.x django-users pbkdf2

你好,我是django项目的开发人员,必须检查我的开发人员还可以。

为此,我必须以用户身份连接自己,但我只有他的电子邮件而不是他的密码。我在table User中发现了该电子邮件和密码,但是密码以此开头:pbkdf2_sha256 ...

所以我猜密码是加密的。有没有一种更简单的方法可以做到这一点?

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

根据创建新用户时密码的哈希方式,您可以将用户的哈希值替换为另一个哈希值:

  1. 进入数据库并复制您要登录的用户的密码哈希
  2. 将此哈希存储在某个地方(您将需要使用它来还原更改)
  3. 复制另一个用户(您知道密码的用户)的哈希值
  4. 粘贴此用户的哈希代替您要登录的用户的哈希

如果以相同方式生成哈希,则可以使用其他用户的密码登录。

然后,完成后,还原数据库中的更改。

希望有帮助。

答案 1 :(得分:0)

django中的密码是一种加密方式,因此无法解密,因此无法从数据库的用户表中查找任何用户的实际密码。
如果要代表其他用户登录而不必知道他们的密码,则可以编写一些复杂的代码来实现此目的,或者使用第三方程序包。
django-hijack看起来不错。它的docs对如何使用它有很好的解释,因此在这里我不再赘述。如果您不喜欢此软件包,则可以查看为此目的的软件包列表here on djangopackages并选择您喜欢的软件包。

django-hijack用法:

首先完成InstallationAfter Installation步骤。

  • /hijack/<user_id>发送请求,其中<user_id>是表id的列user。如果您尚未更新模型用户的字段ID,则该字段ID将为1、2、3,...。因此,该网址将类似于/hijack/1/

  • 如果要通过用户名劫持,请向/hijack/username/<username>发出发布请求。例如。 /hijack/username/awesome_username/

  • 如果您想通过用户的电子邮件劫持,请向/hijack/email/<user email>/发出发布请求。例如。 /hijack/email/awesome@email.com/

以超级用户身份对这些网址之一发出发布请求后,您将被重定向到settings.py中指定的HIJACK_LOGIN_REDIRECT_URL


我不确定django-hijack是否可以在python 3或更高版本的Django上使用。如果不起作用,请尝试django-impersonate,它以相似的方式提供相同的功能,并正式支持python 3.6+和django 1.11+