私はDjangoアプリケーションのためにchange password
機能を書いています。これによりユーザーは自由にパスワードを変更できます。 1つの要件は、ユーザーが元のパスワードを変更する前に再送信する必要があることです。別のビューの結果に基づいてDjangoビューを壁から外す方法
reauth of original password
およびenter new password
の責任は、2つの別々のURLにマップされます。現在のところ、設定されている方法では、右のURLを押すだけで、機能の一部であるenter new password
に直接アクセスできます。私はreauth of original password
を強制する必要があるため、現在の機能は受け入れられません。
この機能を再設計して、リセットパスワードが再認証要件の背後にあるようにするための最良の戦略は何ですか?私の頭に浮かべていることの1つは、成功した再起動時にセッション変数としてフラグを設定し、前記フラグが正しく設定されている場合にのみパスワードをリセットできることです。しかし、私はもっと頑丈な方法があると思っていますか?
私の現在のコードは次のとおりです。これはそれを行うための最善の方法であると私は、私はこの方法がでどのように安全なの知りませんを強調したい場合、私は知らない
def reset_password(request,*args,**kwargs):
if request.method == 'POST':
form = ResetPasswordForm(data=request.POST,request=request)
if form.is_valid():
#save new password hash
else:
context={'form':form}
return render(request,'reset_password.html',context)
else:
form = ResetPasswordForm()
context={'form':form}
return render(request,'reset_password.html',context)
def reauth(request, *args, **kwargs):
if request.method == 'POST':
form = ReauthForm(data=request.POST,request=request)
if form.is_valid():
return redirect("reset_password")
else:
context={'form':form}
return render(request, 'reauth.html', context)
else:
form = ReauthForm()
context = {'form':form}
return render(request, 'reauth.html', context)
かなり十分です。この場合、csrf_exemptデコレータを使用することを選択した理由についても説明できますか? –
Btwこれも私が考えていたアプローチです。短所は気密ではないことであり、セキュリティ上の問題がある可能性があります。 –
デコレータを使用してフォームに投稿を許可します。 – chatuur