【问题标题】:reCaptcha with password_reset() in Django在 Django 中使用 password_reset() 进行 reCaptcha
【发布时间】:2015-01-23 21:36:31
【问题描述】:

urls.py:

url(r'^password/reset/$', 'django.contrib.auth.views.password_reset', {'html_email_template_name': 'email_password.html'}, 'password_reset'), 

我已经阅读了this 并查看了password_reset() 的代码。

当用户想要重置密码时,我需要使用 reCaptcha - 在 password_reset() 中需要检查 request.POST['g-recaptcha-response'] 并向 Google 发出请求(请求有效)。

但我不想在 Django 源代码中编写我的代码或使用像 django-recaptcha 这样的包。

如何重写 password_reset() 或做其他事情来解决这个问题?

谢谢!

【问题讨论】:

    标签: python django


    【解决方案1】:

    一种方法是创建您自己的视图来调用密码重置视图:

    from django.contrib.auth.views import password_reset
    
    def my_password_reset(request):
        # check captcha here
        return password_reset()
    

    password_reset 方法接收的参数之一是“password_reset_form”,即您要用于重置密码的表单类。我建议不要在自定义视图上检查验证码,而是在从 django.contrib.auth.forms.PasswordResetForm

    扩展的新自定义表单中检查它

    【讨论】:

    • 谢谢,但在表单中我无法向谷歌提出请求并检查用户响应
    猜你喜欢
    • 2016-05-28
    • 2021-02-03
    • 2018-09-25
    • 2011-01-27
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多