2009-09-18 11 views
7

मैं एक सत्र में उपयोगकर्ता आईडी और उपयोगकर्ता भूमिका को स्टोर करने के लिए एक कक्षा का निर्माण कर रहा हूं। मुझे यकीन नहीं है कि इस कक्षा में एक ही समय में साइट पर एकाधिक उपयोगकर्ता कब होंगे। क्या किसी को इसके साथ कोई समस्या दिखाई देती है?स्टेटिक सत्र कक्षा और एकाधिक उपयोगकर्ता

public static class SessionHandler 
    { 
     //*** Session String Values *********************** 

     private static string _userID = "UserID"; 
     private static string _userRole = "UserRole"; 

     //*** Sets and Gets ********************************************************** 

     public static string UserID 
     { 
      get 
      { 
       if (HttpContext.Current.Session[SessionHandler._userID] == null) 
       { return string.Empty; } 
       else 
       { return HttpContext.Current.Session[SessionHandler._userID].ToString(); } 
      } 
      set 
      { HttpContext.Current.Session[SessionHandler._userID] = value; } 

     } 
     public static string UserRole 
     { 
      get 
      { 
       if (HttpContext.Current.Session[SessionHandler._userRole] == null) 
       { return string.Empty; } 
       else 
       { return HttpContext.Current.Session[SessionHandler._userRole].ToString(); } 
      } 
      set 
      { HttpContext.Current.Session[SessionHandler._userRole] = value; } 
     } 

} 
+1

अस्थिर और स्थिर 'ग्लोबल' हेल्पर्स का उपयोग करने जैसे बुरे प्रथाओं को प्रोत्साहित करता है। यह एक तकनीकी मुद्दा नहीं है, दीर्घकालिक प्रभावों के साथ एक मानसिकता समस्या – MikeSW

उत्तर

6

आपके द्वारा पोस्ट किया गया कोड हमारे यहां मौजूद कुछ कोड की सटीक प्रतिकृति है।

यह 2 साल से ठीक काम कर रहा है।

प्रत्येक उपयोगकर्ता का उपयोग स्वयं का सत्र है। सर्वर पर किए गए हर अनुरोध एक नया धागा है। भले ही 2 अनुरोध एक साथ हैं, HttpContext.Current उन अनुरोधों में से प्रत्येक के लिए अलग है।

3

आपको प्रत्येक कनेक्शन के लिए एक नया सत्र प्राप्त होगा। कोई भी दो उपयोगकर्ता कभी सत्र साझा नहीं करेंगे। प्रत्येक कनेक्शन का अपना SessionID मूल्य होगा। जब तक उपयोगकर्ता आपके पृष्ठ पर रहता है (ब्राउज़र बंद नहीं करता है, आदि) उपयोगकर्ता उस सत्र को एक अनुरोध से अगले अनुरोध तक बनाए रखेगा।

+0

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

0

यह आपके आवेदन तक पहुंचने वाले एकाधिक उपयोगकर्ताओं के लिए ठीक काम करेगा क्योंकि सभी भरोसेमंद उपयोगकर्ताओं के साथ एक साथ आवेदन करने के लिए अलग-अलग सत्रिक उत्पन्न होंगे। यह आपके सिस्टम में दो अलग-अलग सत्र चर परिभाषित करने के समान तरीके से काम करेगा। यह स्थैतिक रैपर वर्ग सत्र हैंडलर का उपयोग कर टॉव सत्र राज्यों को लपेटने जैसा होगा।

संबंधित मुद्दे