2013-01-03 36 views
7

में SimpleCookie साथ टोकन जीवन अवधि प्रबंधित पहले से ही सही ढंग से काम टोकन मिल गया है, जो इस तरह से सेट किया गया है:अजगर

session_cookie = SimpleCookie() 
session_cookie['key'] = any_string_value 
session_cookie['key']["Path"] = '/' 

headers = [] 
headers.extend(("set-cookie", morsel.OutputString()) 
    for morsel 
    in session_cookie.values()) 

start_response(status, headers) 

मैं भी टोकन जानकारी की आवश्यकता पढ़ सकते हैं और निकालने में सक्षम हूँ:

# Get cookies 
cookies = request.get_cookies() 
#  Get current token from cookies 
token = cookies['token'].value 

अब, क्या एक कुकी के लिए एक समय समाप्ति सेट करने के लिए सबसे अच्छा तरीका हो सकता है, मुझे पता है कि 2 संभव कुंजी है:

  1. session_cookie [ 'कुंजी'] [ 'मैक्स-युग'] = "secods में समय"
  2. session_cookie [ 'कुंजी'] [ 'समाप्ति'] =

"भविष्य की किसी तिथि" मैं अगर यह जान सके एक टोकन समाप्त हो गया है या समाप्त हो चुके टोकन का प्रबंधन करने का सबसे अच्छा तरीका क्या हो सकता है?

बहुत बहुत धन्यवाद!

+0

यह एक टोकन है से बस पूछना ... –

+0

टोकन स्वरूपित वर्णों की एक स्ट्रिंग है और इसमें user_id जैसी जानकारी शामिल है। – PepperoniPizza

+0

आह सामान्य टोकन। हालांकि यह django के लिए कुछ विशिष्ट था। –

उत्तर

3

यदि आप इसे प्राप्त करने का प्रयास करते हैं तो टोकन मौजूद नहीं है तो आप जान सकते हैं कि टोकन समाप्त हो गया है या नहीं।

token = cookies['token'].value #this will not exist 

ब्राउज़र जब समाप्ति की तारीख गुजरता कुकी और सब कुछ है कि से संबंधित हटा देता है।

इस तरह कई कार्यान्वयन में आप कुकीज को भी हटा सकते हैं या उदाहरण के लिए उपयोगकर्ता को लॉग-आउट कर सकते हैं, लेकिन उपयोगकर्ता_आईडी कुकी की समाप्ति तिथि को अतीत में कुछ (उदाहरण के लिए ऋणात्मक संख्या) पर सेट कर सकते हैं।

अब जब मैं समझता हूं कि आपको समाप्त हो चुके टोकन सर्वर पक्ष का पता लगाने की नीति की आवश्यकता है और इसे डबल सत्यापन द्वारा पूरा किया जा सकता है। जैसे कि टोकन पढ़ते समय प्रत्येक टोकन और सर्वर पक्ष के लिए एक अद्वितीय पहचानकर्ता को स्टोर करने का प्रयास करें, यह जांचने का प्रयास करें कि यह समाप्त हो गया है या नहीं। उपयोगकर्ता के लिए अपनी कुकीज़ में हेरफेर करना भी संभव है, इसलिए महत्वपूर्ण डेटा स्टोर करने या किसी भी उपयोगकर्ता_आईडी को सरल सत्यापन करने के लिए कुकीज़ पर कभी भी भरोसा न करें।

मुझे उम्मीद है कि मैंने मदद की है।

संपादित

rfc2109

अधिकतम आयु = डेल्टा-सेकंड वैकल्पिक से। अधिकतम आयु विशेषता कुकी के जीवनकाल को सेकंड में परिभाषित करती है। डेल्टा-सेकंड मान दशमलव गैर- ऋणात्मक पूर्णांक है। डेल्टा-सेकंड सेकंड के बाद, क्लाइंट कुकी को त्यागना चाहिए। शून्य का मान है कि कुकी तुरंत त्याग दिया जाना चाहिए।

और wiki http cookies

निर्देश समय-सीमा समाप्त होने से ब्राउज़र को जब कुकी को हटाने के लिए कहता है। आरएफसी 1123 में प्रयुक्त प्रारूप से व्युत्पन्न, दिनांक "Wdy, डीडी सोम YYYY एचएच: एमएम: एसएस जीएमटी" के रूप में निर्दिष्ट है, [2 9] सटीक यह कुकी समाप्त होने की तिथि/समय इंगित करता है।कुकी को पूर्ण दिनांक/समय के रूप में समाप्ति के विकल्प के रूप में, आरएफसी 6265 ने मैक्स-एज विशेषता का उपयोग भविष्य में सेकेंड के अंतराल के रूप में कुकी की समाप्ति को सेट करने के लिए किया है, ब्राउज़र के समय के सापेक्ष कुकी।

मैं अधिकतम आयु का उपयोग करने की अनुशंसा करता हूं क्योंकि तारीखों को सेट करने से कुछ परेशानी बचाती है। आप केवल एक अंतराल की गणना करते हैं।

में थोड़ा और अधिक मैंने पाया Reading कि अधिकतम उम्र आईई < 9 द्वारा समर्थित नहीं है और इसका मतलब है कि समय सीमा समाप्त होने पसंद किया जाता है

Max-Age vs Expires

मदद करनी चाहिए कि ;-)

+0

धन्यवाद, अभी भी मेरी समस्या होगी, यह मेरी गलती थी यह समझाते हुए, कि जब भी कोई उपयोगकर्ता लॉग करता है, तो उसे एक नया टोकन प्राप्त होगा। – PepperoniPizza

+0

लेकिन आप अपने लक्ष्य या अपने उपयोगकर्ता केस परिदृश्य के बारे में कुछ समझाने के लिए क्या चाहते हैं ...। –

+1

@ जिमे केन - मुझे लगता है कि वह पूछ रहा है कि टोकन पर समाप्ति तिथि कैसे सेट करें। –