2012-10-08 30 views
5

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

मेरा सवाल यह है कि फॉर्म प्रमाणीकरण टाइमआउट सत्र सत्र से अधिक लंबा क्यों होना चाहिए? असल में, डिफ़ॉल्ट रूप से, web.config अधिक होने के लिए प्रमाणीकरण का टाइमआउट सेट करता है।

  1. सत्र का समय समाप्त होने से पहले रूपों प्रमाणन करता है:

    यहाँ 2 परिदृश्य मैं देख रहा हूँ कर रहे हैं। उपयोगकर्ता खोज फ़िल्टर की तरह चीजें खो देता है और हालांकि वे अभी भी सुरक्षित पृष्ठ देख सकते हैं, चीजें अलग दिख सकती हैं और विभिन्न चीजें रीसेट हो सकती हैं। इसके अलावा, डेवलपर को हर बार जब वे इसका इस्तेमाल करते हैं तो सत्र null बनने की चिंता करनी पड़ती है।

  2. सत्र से पहले औपचारिक समय निकालता है। उपयोगकर्ता को उपयोगकर्ता नाम और पासवर्ड दोबारा दर्ज करना होगा, लेकिन वे उस पृष्ठ पर वापस आते हैं, जिस पर वे थे और सत्र जानकारी बरकरार रहे (जब तक कि यह भी समय समाप्त नहीं हुआ)। डेवलपर को केवल एक ही स्थान पर सत्र के बारे में चिंता करना है null - लॉगिन पर - और यदि आवश्यक हो तो इसे प्रारंभ कर सकते हैं।

परिदृश्य क्यों 1) कभी और अधिक वांछनीय होगा? क्या मैं कुछ भूल रहा हूँ?

उत्तर

5

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

आप अपने बयान के बारे में सही हैं। एक डेवलपर के रूप में मैं 1 से अधिक 2 पसंद करूंगा। हालांकि सत्र की समाप्ति को संभालने का एक आसान तरीका है। यह SO question देखें। उत्तरों में से एक सत्र समाप्ति के लिए एक अच्छा समाधान है।

protected void Session_Start(Object sender, EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     FormsAuthentication.SignOut();       
     Response.Redirect("~/SessionEnd.aspx"); 
    } 
} 

इस तरह आप एक ही स्थान पर समाप्त हो चुके सत्र को संभाल सकते हैं।

+1

यह ध्यान देने योग्य है कि वेब एप्लिकेशन में एक वर्ग में * सभी * सत्र की पहुंच करना बहुत अच्छा विचार है, और यह कक्षा हमेशा यह देखने के लिए जांच करती है कि 'सत्र' शून्य है और यदि आवश्यक हो तो इसे फिर से शुरू करें । – Jez