我正在爲我的Django應用程序編寫change password
功能,允許用戶隨意更改其密碼。一個要求是用戶在繼續更改之前必須重新提交原始密碼。如何根據另一個視圖的結果隔離Django視圖
負責reauth of original password
和enter new password
的視圖被映射到兩個單獨的URL。目前它的設置方式,只需點擊正確的url即可直接進入enter new password
的部分功能。我需要制定reauth of original password
強制性的,因此目前的功能是不可接受的。
重新設計此功能的最佳策略是什麼,以便重置密碼在reauth要求之後關閉?我想到的一件事是在成功的reauth時將標誌設置爲會話變量,並且只有在正確設置了所述標誌的情況下才允許密碼重置。但我希望可以有一個更強大的方式?
我當前的代碼是:
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裝飾器? –
順便說一句,這也是我想到的方法。缺點是它不是氣密的,可能存在安全問題。 –
使用裝飾器允許表單發佈。 – chatuur