모바일 앱용 백엔드를 만들고 Userena와 함께 Django를 사용하여 사용자 관리를하고 있습니다. 로그인을하고 Django REST 프레임 워크를 사용하여 등록하면 모든 것이 잘 동작합니다. 지금해야 할 일은 "암호 잊어 버리기"기능을 구현하는 것뿐입니다. Userena에서 이미 구현 된 것을 사용하고 싶었지만 csrf_exempt
dectorator를 사용한 후에도 "CSRF 토큰 누락 또는 부정확"오류를 제거 할 수 없습니다. 나는 무엇을 worng하고 있냐?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
도 추가 할 수 있습니다. 단지 csrf_exempt 데코레이터를 확인하려고합니다. –
@sawangupta csrf_excempt는 자신의 URL 구성에 적용됩니다. CSRF 토큰이 포함되어 있기 때문에 브라우저를 사용할 때'csrf_exempt (password_reset) ' – sk1p