coldfusion - क्या हम कोल्डफ्यूजन में सत्र का नवीनीकरण कर सकते हैं?




coldfusion-8 (4)

आप जो पूछ रहे हैं उसे करने का सटीक तरीका सत्र डेटा को डेटाबेस में पुश करने के लिए है जब onSessionEnd निकाल दिया जाता है और अगले सत्र सत्र पर इसे पुनर्स्थापित किया onSessionStart । पढ़ने के लिए डेटा प्रविष्टियों को जानने के लिए, आप अद्वितीय पहचानकर्ता के साथ उपयोगकर्ता के ब्राउज़र में कुकी डाल सकते हैं (उदाहरण के लिए, नमक + उस प्रविष्टि का एन्क्रिप्टेड आईडी), "मुझे याद रखें" सामान की तरह।

मैं अपने सत्र में 5-6 चर वाले मानों को संग्रहित कर रहा हूं। इसके सत्र समाप्त होने के बारे में कोई भी सुझाव है कि मैं अपना सत्र संरचना कैसे नवीनीकृत कर सकता हूं? मैं Coldfusion 8 का उपयोग कर रहा हूँ। धन्यवाद !!


उस सत्र से सीएफएम पेज पर कोई भी कॉल सत्र बढ़ाएगा। मैंने जो कुछ भी देखा है वह है एक जेएस टाइलर चल रहा होगा और सत्र समाप्त होने से पहले ही समाप्त हो जाएगा। जब टाइमर ऊपर चलाता है तो वह एक पॉपअप को ट्रिगर करता है जो गैर सीएफएम पृष्ठ (मूलभूत HTML) को लोड करता है और उस पृष्ठ में जल्द ही खत्म होने वाले सत्र के बारे में एक संदेश दिया गया है और उपयोगकर्ता को इसे जारी रखना चाहते हैं।


आप कुछ समय के लिए अपने सत्र का समय समाप्त करने की कोशिश कर सकते हैं, कहते हैं 5min

तब जब कोई व्यक्ति प्रमाणित करता है, तो सत्र समयबाह्य को कुछ बड़ा, 30 मिनट तक बढ़ाएं।

और अगर वे साइनआउट करते हैं, तो इसे नीचे वापस ड्रॉप करें

जैसे। अपने 5 मिनट के सत्र समय समाप्ति के साथ अपने सीएफ व्यवस्थापक को कॉन्फ़िगर करें

साइन इन पर:

<cfscript>
// extend session timeout to 1800 seconds (30min)
session.SetMaxInactiveInterval( javaCast( 'long', 1800 ) );
</cfscript>

साइन आउट करने पर:

<cfscript>
// shrink session timeout to 300 seconds (5min)
session.SetMaxInactiveInterval( javaCast( 'long', 300 ) );
</cfscript>

सत्र 5 मिनट के लिए चारों ओर लटका रहता है और फिर साफ हो जाता है। जब तक आप साइट का उपयोग जारी नहीं रखेंगे, इस स्थिति में प्रत्येक पृष्ठ अनुरोध आपको और 5min देगा।


यहाँ एक विचार है कि Ajax स्वचालित रूप से सर्वर को पिंग कर सकता है (जैसे हेनरी के उत्तर में सुझाव दिया गया था।)

//This function will keep the session alive as long as the page is still open.
//Whenever the page nears expiration, it automatically extends it. 
function autoExtendSession(days,hours,mins,secs){
    var milliseconds = (days*86400000)+(hours*3600000)+(mins*60000)+(secs*1000);
    setTimeout(
    function(){
        $.post("server/heartbeat.cfm");
        console.log("Heartbeat sent to the server.");

        //Start another timer.
        autoExtendSession(days,hours,mins,secs)

    //Once we are 98% of the way to the timeout, the heartbeat is sent.
    //This way the timeout should never actually be reached.
    }, milliseconds-(milliseconds*0.02));
};

hearbeat.cfm पेज को वास्तव में कुछ भी नहीं रखना पड़ता है, सर्वर सत्र का नवीनीकरण करता है जब $ .पोस्ट उसे हिट कर देता है, चाहे उसकी सामग्री हो या नहीं