Django: Как запретить неавторизованным пользователям доступ к URL сброса для сброса пароля? - PullRequest
1 голос
/ 18 апреля 2020

сбросить шаблон URL

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-адрес в основном, если пользователь хочет сбросить свой пароль, но я хочу, чтобы только логин пользователи могли получить доступ к этой странице. Я знаю, что я могу предотвратить -авторизовать пользователя для доступа к этому URL с помощью @ login_required декоратора, но я использую PasswordResetView , который написан django, и я не могу использовать этот декоратор на нем. Может ли кто-нибудь сказать мне, как я могу добавить эту функцию, что только авторизованный пользователь может получить доступ к этой странице и как я могу изменить PasswordResetView представление класса по мне.

1 Ответ

1 голос
/ 18 апреля 2020

Можно, но это не имеет особого смысла, поскольку часто пользователи просят сбросить пароль, если они не могут войти в систему. Таким образом, добавив декоратор login_required, люди, которые забыли свой пароль, больше не могут сбросить свой пароль.

В любом случае, вы можете просто обернуть результат функции .as_view() через декоратор:

from django.contrib.auth.decorators import <b>login_required</b>

urlpatterns = [
    # &hellip;
    url(r'^reset/$',
        <b>login_required(</b>auth_views.PasswordResetView.as_view(
            template_name='password_reset.html',
            email_template_name='password_reset_email.html',
            subject_template_name='password_reset_subject.txt',
        )<b>)</b>
    ),
    # &hellip;
]
...