Я делаю backend для мобильного приложения и используя Django с Userena для управления пользователями. Я сделал вход и зарегистрировался с использованием инфраструктуры Django REST, и все работает нормально. Единственное, что мне нужно сделать сейчас - это реализовать функциональность «забыть пароль». Я хотел использовать уже реализованный из Userena, но я не могу избавиться от ошибки «CSRF-токен, отсутствующий или некорректный», даже после использования dectorator csrf_exempt
. Что я делаю?csrf_exempt не работает с django auth
urls.py
from django.contrib.auth.views import password_reset
from django.views.decorators.csrf import csrf_exempt
...
urlpatterns = patterns(
'',
url(r'^password/mobile/reset/$',
csrf_exempt(password_reset),
{'template_name': 'userena/password_reset_form.html',
'email_template_name': 'userena/emails/password_reset_message.txt',
'extra_context': {'without_usernames': userena_settings.USERENA_WITHOUT_USERNAMES}
},
name='userena_password_mobile_reset'),
)
passowrd_reset_form.html
{% extends 'userena/base_userena.html' %}
{% load i18n %}
{% block title %}{% trans "Reset password" %}{% endblock %}
{% block content %}
<form action="" method="post">
<fieldset>
<legend>{% trans "Reset Password" %}</legend>
{% csrf_token %}
{{ form.as_p }}
</fieldset>
<input type="submit" value="{% trans "Send password" %}" />
</form>
{% endblock %}
Если вы посмотрите на запрос, отправленный этой формой, например, в средствах разработки вашего браузера (Вкладка «Сеть» ...), является токеном CSRF, включенным в отправленные данные? Исключение представления из защиты CSRF не является хорошей идеей, так как позволяет злоумышленникам сбросить пароль ваших пользователей. – sk1p
вы также можете добавить views.py, просто хотите проверить декоратор csrf_exempt. –
@sawangupta csrf_excempt применяется в его конфигурации url: 'csrf_exempt (password_reset)' – sk1p