2013-11-04 10 views
11

में कुकी के लिए समाप्ति समय को रीसेट करना मैं पाइथन वेब फ्रेमवर्क फ्लास्क का उपयोग कर रहा हूं। मैं अपने ऐप में सत्र का उपयोग करता हूं। मेरे ऐप के लिए main कहा जाता है, मुझे सेटिंग main.permanent_session_lifetime = timedelta(days=5) मिल गई है, ताकि उपयोगकर्ता लॉग इन करने के 5 दिनों के लिए लॉग इन रहे। लेकिन एक सक्रिय उपयोगकर्ता भी 5 दिनों के बाद लॉग आउट हो जाएगा। मैं प्रत्येक बार साइट पर जाने के लिए समाप्ति समय को रीसेट करना चाहता हूं, इसलिए आप निष्क्रियता के 5 दिनों के बाद ही लॉग आउट हो जाएं। ज्यादातर साइटें इस तरह से काम करती हैं। मैं फ्लास्क के साथ ऐसा कैसे करूं?फ्लास्क

+1

बोतल आप उपकरण अपने आप को कुछ इस तरह लिखने के लिए देने के लिए कोशिश करता है। आप कैसे "गतिविधि" परिभाषित करते हैं वेबसाइट निर्भर है। साइट पर जाने वाली "गतिविधि" या उत्पाद खरीदने जैसी कुछ है? जैसा कि आप देख सकते हैं, "निष्क्रियता" जैसे विकल्प नहीं हो सकते हैं, आपको इसे स्वयं लागू करना होगा। –

+0

मेरे मामले के लिए, गतिविधि का अर्थ केवल साइट पर जाना है। यदि कुकी समाप्त होने से पहले वे साइट पर किसी भी पेज पर जाते हैं, तो मैं उस समय से 5 दिनों तक समाप्ति को समाप्त करना चाहता हूं। –

उत्तर

18

आप @before_request हैंडलर का उपयोग कर प्रत्येक अनुरोध पर क्लाइंट को सत्र नवीनीकृत कर सकते हैं।

निम्नलिखित का प्रयास करें:

@app.before_request 
def func(): 
    session.modified = True 
+0

खूबसूरती से काम करता है। मैं वास्तव में पहले से अन्य कारणों से '@ app.before_request' सुविधा चाहता था, इसलिए यह जानना बहुत अच्छा है। –

+0

सर्वर साइड सत्र (फ्लास्क-केवीएसशन) का उपयोग करते समय यह काम नहीं करता है। क्या इसे ठीक करने का कोइ उपाय है? – zengr

+2

@zengr यह फ्लास्क-केवीएसशन की एक समस्या है क्योंकि यह "फ्लास्क के हस्ताक्षरित कुकी-आधारित सत्र प्रबंधन के लिए ड्रॉप-इन प्रतिस्थापन" कहता है। यह पूरी तरह से अपना काम नहीं करता है। एक बग रिपोर्ट पोस्ट करें। एक कामकाज '.regenerate()' विधि को कॉल करने के लिए हो सकता है। –