【问题标题】:Django:How to prevent non authorize users to access reset url to reset password?Django:如何防止非授权用户访问reset url来重置密码?
【发布时间】:2020-07-31 20:24:53
【问题描述】:

重置网址格式

url(r'^reset/$',
    auth_views.PasswordResetView.as_view(
        template_name='password_reset.html',
        email_template_name='password_reset_email.html',
        subject_template_name='password_reset_subject.txt',
)

这个 url 基本上是如果用户想重置他的密码,但我希望只有登录用户可以访问这个页面。我知道我可以防止非授权用户使用 @login_required 装饰器访问这个 url但我正在使用由 django 编写的 PasswordResetView 并且我无法在其上使用此装饰器。 谁能告诉我如何添加只有登录用户才能访问此页面的功能以及如何根据我修改 PasswordResetView 类视图。

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    您可以,但这没有多大意义,因为如果用户无法登录,通常会要求重置密码。因此,通过添加 login_required 装饰器,忘记密码的人将无法再重置密码。

    无论如何,您可以通过装饰器将.as_view() 函数的结果包装起来:

    from django.contrib.auth.decorators import login_required
    
    urlpatterns = [
        # …
        url(r'^reset/$',
            login_required(auth_views.PasswordResetView.as_view(
                template_name='password_reset.html',
                email_template_name='password_reset_email.html',
                subject_template_name='password_reset_subject.txt',
            ))
        ),
        # …
    ]

    【讨论】:

    • 谢谢。我知道这没有多大意义,但我只是为了练习。
    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多