4

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 + "/")

アカウントのパスワードが同じパスワードに変更された場合でも、暗号化されたパスワードが変更され、ユーザーはログオンできません。

これを修正する方法はありますか?ありがとう。

4

2 に答える 2

0

正しい方法は、代わりに django 組み込みのパスワード リセットを使用することです。

urls.pyで

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
    )

テンプレートのみを作成し、必要に応じて URL 名を使用して解決する必要があります。

于 2012-06-26T00:11:54.670 に答える