Cis*_*tin 5 python passwords django
使用 Django 的“set_password()”函数更改站点上的用户密码后,密码将更改为加密字符串。但是,用户无法使用新密码或旧密码登录网站 - 之前输入的密码无效。这是获取密码的代码片段 -
if request.POST:
password = request.POST['password'].encode('ascii','replace')
confirm_password = request.POST['confirm_password'].encode('ascii','replace')
if password == confirm_password:
user.set_password(confirm_password)
user.save()
return HttpResponseRedirect('/reset/thanks/')
else:
return HttpResponseRedirect('/reset/' + user.get_profile().forgotpasswordcode + "/" + user.email + "/")
Run Code Online (Sandbox Code Playgroud)
即使帐户的密码更改为与原来相同的密码,加密的密码也会发生变化,并且用户无法登录。
有没有什么办法解决这一问题?谢谢。
正确的方法是使用 django 内置密码重置:
from django.contrib.auth import views as auth_views
urlpatterns = patterns('',
### previous urls
url(r'^password/reset/$',
auth_views.password_reset,
{'template_name': 'my_cool_app/registration/password_reset_form.html'},
name='my_cool_app_password_reset'),
url(r'^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
auth_views.password_reset_confirm,
{'template_name': 'my_cool_app/registration/password_reset_confirm.html'},
name='my_cool_app_password_reset_confirm'),
url(r'^password/reset/complete/$',
auth_views.password_reset_complete,
{'template_name': 'my_cool_app/registration/password_reset_complete.html'},
name='my_cool_app_password_reset_complete'),
url(r'^password/reset/done/$',
auth_views.password_reset_done,
{'template_name': 'my_cool_app/registration/password_reset_done.html'},
name='my_cool_app_password_reset_done'),
### other urls
)
Run Code Online (Sandbox Code Playgroud)
您只需创建模板,然后在需要时使用 url 名称来解析它们。
| 归档时间: |
|
| 查看次数: |
7228 次 |
| 最近记录: |