2012-04-07 10 views
11

मैंने अभी अपने डीजेंगो को 1.4 में अपडेट किया है। लेकिन जब मैं अपना लॉगिन फॉर्म जमा करने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है:डीजेंगो - सीएसआरएफ टोकन गुम या गलत

निषिद्ध (403) सीएसआरएफ सत्यापन विफल। अनुरोध निरस्त विफलता के कारण दिया गया: सीएसआरएफ टोकन गुम या गलत है।

मेरी settings.py (MIDDLEWARE_CLASSES) में मैं निम्न पंक्ति को दूर करने के लिए किया था, क्योंकि इसके अब पदावनत:

'django.middleware.csrf.CsrfResponseMiddleware', 

और की तुलना में मैं शुरू कर दिया यह त्रुटि मिलना।

कुछ आवश्यक जानकारी: Urls.py

url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'registration/login.html'}, name='login') 
MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GZipMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
# 'django.middleware.csrf.CsrfResponseMiddleware', 
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
) 

login.html

{% extends "base.html" %} 
{% block title %} Login {% endblock %} 
{% block content %} 



    <div id="text"> 
     <table> 
      <form action="" method="post"> 
      {% csrf_token %} 
      <tr> 
       <td><label for="username">Email:</label></td> 
       <td><input type="text" name="username" value="" id="username"></td> 
      </tr> 
      <tr> 
       <td><label for="password">Password:</label></td> 
       <td><input type="password" name="password" value="" id="password"></td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Login" /> 
      {% if next %} 
       <input type="hidden" name="next" value="{{ next }}" /></td> 
      {% else %} 
       <input type="hidden" name="next" value="/" /></td> 
      {% endif %} 
      </tr> 
      </form> 
     </table> 


     {% if form.errors %} 
     <p class="error">User or password incorrect</p> 
     {% endif %} 
    </div> 
{% endblock %} 

किसी को भी जानता है कि कैसे इस समस्या को हल करने के लिए करता है?

उत्तर

7

कोड ठीक दिखता है, Django 1.3 और 1.4 auth.views.login सही कॉन्टेक्स्ट का उपयोग करता है। की जाँच करें: ब्राउज़र की

  • सबसे पहले स्पष्ट डेटा और
  • क्या का मूल्य csrfmiddlewaretoken
  • सबमिट किए जाने पर आप सही Django आयात करें पुन: प्रयास करें?
  • बस सुनिश्चित करें, क्या कंसोल में उपयोगकर्ता चेतावनी है ?: "एक {% csrf_token%} टेम्पलेट में उपयोग किया गया था, लेकिन संदर्भ ने मूल्य प्रदान नहीं किया। यह आमतौर पर RequestContext का उपयोग नहीं कर रहा है।"
+2

ब्राउज़र का साफ़ डेटा मुझे हल करता है। – chaim

3
  1. 1,3 और 1.4 के लिए, "django.middleware.csrf.CsrfResponseMiddleware" "django.middleware.csrf.CsrfViewMiddleware" नाम दिया जाना चाहिए
  2. इसके अलावा, मेरे लिए समाशोधन गूगल क्रोम की कुकी यह काम कर दिया।
0

मुझे इसी तरह का मुद्दा था जहां मेरा ऐप HTTPS पर तैनात किया गया था। मुझे सेटिंग ध्वज CSRF_COOKIE_HTTPONLY को झूठी में बदलना पड़ा ताकि क्लाइंट सर्वर csrf कुकी तक पहुंच सके।

संबंधित मुद्दे