私はDjangoフレームワークの初心者です。私はログインページに何か特別な防御を追加しようとしています。confirm_login_allowedでのrecaptchaの確認方法は?
私は組み込みのDjangoの認証システムを使用しており、recaptcha検証を追加したいと考えています。
confirm_login_allowedメソッドでreCAPTCHA検証を追加することは可能ですか?
class MyAuthenticationForm(AuthenticationForm):
def confirm_login_allowed(self, user):
recaptcha_response = request.POST.get('g-recaptcha-response') # Here is the stuck!
url = 'https://www.google.com/recaptcha/api/siteverify'
values = {
'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
'response': recaptcha_response
}
data = urllib.parse.urlencode(values).encode()
req = urllib.request.Request(url, data=data)
response = urllib.request.urlopen(req)
result = json.loads(response.read().decode())
if not result['success']:
raise forms.ValidationError('Captcha Validation Failed.', code='invalid_captcha')
をそして、私は、この行でエラーを持っていることを確認:私のforms.pyで
recaptcha_response = request.POST.get('g-recaptcha-response')
この方法で要求を取得する方法はありますか良い方法はthrereです?
アドバイスありがとうございます!
ありがとうございます。しかし、私はLogInViewクラスのようなクラスベースのビューに基づいてDjangoの認証システムに組み込まれているので、関数ベースのビューを避けるようにしています。最新のDjangoリリースでは、login()とlogout()関数は推奨されていません。 そして私はrecaptcha応答を得るための解決策を見つけます。 の代わりに recaptcha_response = request.POST.get( 'g-recaptcha-response') recaptcha_response = self.data ['g-recaptcha-response']を使用しています –