2013-07-15 14 views
6

काम नहीं कर रहा है मैं अपने वर्तमान उपयोगकर्ता को बाकी एपीआई के ब्राउज़र मोड से लॉगआउट करने में सक्षम नहीं हूं।लॉगआउट

यह मेरी सेटिंग है

REST_FRAMEWORK = { 
       'PAGINATE_BY': 10, 
       'DEFAULT_AUTHENTICATION_CLASSES': ( 
         'rest_framework.authentication.BasicAuthentication', 
         'rest_framework.authentication.SessionAuthentication', 
         'rest_framework.authentication.TokenAuthentication', 
               ), 
        'DEFAULT_PERMISSION_CLASSES': ( 
         'rest_framework.permissions.IsAuthenticated', 
            ), 
       } 

यह है क्योंकि मैं सत्र का इस्तेमाल किया? Pls मदद करते हैं।

अनुरोध और प्रतिक्रिया हेडर:

Request URL:`http://localhost:8000/api/api-auth/logout/?next=/api/city/` 
Request Method:GET 
Status Code:302 FOUND 
Request Headers: 
--------------- 
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Cookie:sessionid=j7qebcdjdwzwqlmep4eyq3svuial43uv; csrftoken=vK3Ghn3QFVbCe3nKx1LDZBTzM7sRiDym 
Host:127.0.0.1:8000 
Referer:`http://localhost:8000/api/city/` 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36 
Query String Parametersview sourceview URL encoded 
next:/api/city/ 
Response Headers 
---------------- 
Content-Type:text/html; charset=utf-8 
Date:Mon, 15 Jul 2013 20:46:35 GMT 
Location:`http://localhost:8000/api/city/` 
Server:WSGIServer/0.1 Python/2.7.4 
Set-Cookie:sessionid=b1x24z93dqu384lqirtv5r9npy16s0qx; expires=Mon, 29-Jul-2013 20:46:35 GMT; httponly; Max-Age=1209600; Path=/ 
Vary:Cookie 

उत्तर

12

इसे हल! यह मूल प्रमाणीकरण सक्षम होने के कारण था। मुझे लगता है कि मैंने ब्राउजर में HTTP लॉगिन के माध्यम से लॉग इन किया है और लॉगआउट उस के लिए काम नहीं कर रहा है। मैंने बेसिक प्रमाणीकरण हटा दिया और सब कुछ ठीक काम करने लगता है।

+0

BasicAuthentication टिप्पणी से यह अच्छी तरह से रूप में लंबे समय से काम किया के रूप में मैं जेनरिक उपयोग कर रहा था, जब मैं APIView वापस स्विच मैं अभी भी असमर्थ हूँ लॉगआउट करने के लिए – Punit

2

असल में लॉगआउट काम कर रहा है, लेकिन रीडायरेक्ट (एक दृश्य है कि प्रमाणीकरण की आवश्यकता है, क्योंकि हम अनुमति IsAuthenticated का उपयोग करें) लॉगआउट के अंत में, BasicAuth अनुरोध प्रमाणन फिर से कैश की गई HTTP प्रमाणीकरण हेडर सूचना का उपयोग कर के दौरान:

auth = request.META.get('HTTP_AUTHORIZATION', b'') 

तो ओपी ने कहा, हम BasicAuth को अक्षम कर सकते हैं और केवल सत्रऑथ का उपयोग कर सकते हैं। लेकिन बात यह है कि, हमें कभी-कभी जीयूआई के बिना एपीआई तक पहुंचने की आवश्यकता हो सकती है, हम इसके बजाय टोकनएथ का उपयोग कर सकते हैं। चूंकि BasicAuth/TokenAuth किसी भी तरह से सुरक्षित नहीं है (https://tools.ietf.org/html/rfc2617), यह बेहतर हो सकता है कि हम OAuth2 या अन्य सुरक्षित लेख योजनाओं का उपयोग करें। यह वैसे भी मांगों पर निर्भर करता है।

1

मैं आज इस समस्या हुई है और निम्न के क्रम बदलकर इसे हल:

'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication', 
    'rest_framework.authentication.BasicAuthentication', 
    'rest_framework.authentication.TokenAuthentication', 
), 
संबंधित मुद्दे