我正在爲移動應用程序製作後端,並使用Django和Userena進行用戶管理。我做了登錄並使用Django REST框架註冊,一切正常。我現在唯一需要做的就是實現「忘記密碼」功能。我想使用Userena中已經實現的一個,但是即使在使用dectororator後,我也無法擺脫「CSRF令牌丟失或不正確」的錯誤。我在做什麼?csrf_exempt不能與django驗證碼一起工作
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