Django中忘记密码的实现
Posted
技术标签:
【中文标题】Django中忘记密码的实现【英文标题】:Forgotten password implementation in Django 【发布时间】:2011-07-26 18:47:29 【问题描述】:我正在尝试在我的 django 应用程序中实现忘记密码的功能。我给出了一个单独的 forgetPassword.html,用户可以在其中提供他的电子邮件 ID;如果该电子邮件已注册(在数据库中找到),则会获取该电子邮件的相应密码并将其发送到他的电子邮件 ID。这就是我想要实现的。作为一个 Django 新手,我坚持执行。这是我的 forgottenPassword.html
<form name="forgotPassword" method="POST" id="myFormid" action="http://10.1.0.90:8080/forgotPassword/">
<div style="float:center;width:100%;">
Enter your E-mail ID</label><br/> <input type="text" name="email" size="25" />
<input type="submit" value="Submit" />
</div>
</form >
我在views.py中的方法是
def forgotPassword(request):
if request.POST:
email=request.POST.get("email")
print email
user = UniversityDetails.objects.filter(email=email)
print user
if(not user):
print "No user"
return render_to_response("forgotPassword.html")
else:
???????????????
return render_to_response("passwordRecovery.html")
return render_to_response('forgotPassword.html')
在这里,我尝试实现的是传递在 forgetPassword.html 中输入的电子邮件 ID 并将其保存在变量“电子邮件”中。之后从数据库中获取带有该电子邮件的所有对象。并从中过滤密码。我猜我放的部分????应填写查询以获取与该电子邮件 ID 对应的密码。有人可以帮我做这件事吗?
【问题讨论】:
我同意丹尼尔的观点。您必须首先找到将“实际”密码保存到数据库中的方法。但当然,您必须在这里处理安全问题。 【参考方案1】:(按设计)没有办法这样做。您无法获取用户的密码,因为它仅作为安全哈希存储在数据库中,并且无法反转该哈希。
然而,Django 确实在 contrib.auth 中提供了一个内置的 reset 密码实现 - 请参阅 the documentation。
【讨论】:
【参考方案2】:rv_k,我只想说我建议您查看 django.contrib.auth 而不是您当前的系统,因为您将密码存储为纯文本。
也就是说,为了回答您的问题,您已经提取了与电子邮件匹配的 UniversityDetails
查询。假设每个“用户”只有 1 封电子邮件,请改用 get 查询。
user = UniversityDetails.objects.get(email=email)
send_mail("Your PW", user.password, "admin@example.com", [email])
【讨论】:
非常感谢 Yujita。即使我做错了,我可以在你的帮助下暂时修复它。 @rv_k 做。不是。店铺。密码。在。清楚的。文本!或任何可恢复的格式。时期。这一点都不为过!以上是关于Django中忘记密码的实现的主要内容,如果未能解决你的问题,请参考以下文章