- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试手动使用 make_password
和 check_password
函数。在我的一个观点中,我是这样做的(只是出于测试原因):
#iteration one:
def enter(request):
res = make_password('admin')
return HttpResponse(res)
所以,当我转到 enter
页面时,我看到了这些东西:
pbkdf2_sha256$15000$fmX24ZPCKBdA$fvpfYMacxOi44QFDeLLfRRUN85RweMJTfxxoC+YS2XE=
假设我将此输出存储在一个文本文件中(再次出于测试原因)passwords.txt
,格式如下:
1 pbkdf2_sha256$15000$fmX24ZPCKBdA$fvpfYMacxOi44QFDeLLfRRUN85RweMJTfxxoC+YS2XE=
2 ....hash for another user
在第二次迭代中,我想检查我的密码(让它存储在请求变量中的 GET['pass'] 中),但不知道如何:
def login(request):
# How to use check_password here to check against data stored in
# passwords.txt
# it should either output False
# or an id, like 1 in our test case for password 'admin'.
而且我想再次强调,我想手动使用它,只是为了了解这些功能背后的逻辑。所以,我现在不想让 Django
帮我做这件事。
最佳答案
您需要使用 django.contrib.auth.hashers.check_password
, 并将未加密的密码和加密的字符串传递给它,如果匹配则返回 True
,否则返回 False
。
因此
encrypted = 'pbkdf2_sha256$15000$fmX24...'
if check_password(request.POST['pass'], encrypted):
print("Login successful")
请注意,您不想使用 GET
方法提交密码,因为使用 GET
密码将无限期地存储在日志和浏览器历史记录中。
关于python - 如何手动使用 make_password 和 check_password?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192340/
我需要在 Django 中以编程方式创建数百(可能数千)个用户。我正在使用类似的东西: from django.contrib.auth.models import User from django.
我尝试手动使用 make_password 和 check_password 函数。在我的一个观点中,我是这样做的(只是出于测试原因): #iteration one: def enter(reque
这个问题在这里已经有了答案: Password string comparison in Django app (2 个答案) 关闭 5 年前。 我正在尝试实现用户密码历史记录,以便用户在更新密码时
我是一名优秀的程序员,十分优秀!