Python 如何手动使用make_密码和check_密码?
我尝试手动使用Python 如何手动使用make_密码和check_密码?,python,django,Python,Django,我尝试手动使用make_password和check_password功能。我在我的一个观点中这样做(只是出于测试原因): 所以,当我进入enter页面时,我看到了以下内容: pbkdf2_sha256$15000$fmX24ZPCKBdA$fvpfYMacxOi44QFDeLLfRRUN85RweMJTfxxoC+YS2XE= 假设我将此输出存储在一个文本文件中(同样出于测试原因)passwords.txt格式为: 1 pbkdf2_sha256$15000$fmX24ZPCKBdA$
make_password
和check_password
功能。我在我的一个观点中这样做(只是出于测试原因):
所以,当我进入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帮我做这件事。您需要使用,并将未加密的密码和加密的字符串传递给它,如果它们匹配,它将返回True
,如果不匹配,则返回False
因此
请注意,您永远不想使用
GET
方法提交密码,因为使用GET
密码将无限期地存储在日志和浏览器历史记录中。对于2.1版本@user3821178,您可以编写答案
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'.
encrypted = 'pbkdf2_sha256$15000$fmX24...'
if check_password(request.POST['pass'], encrypted):
print("Login successful")