पर मिश्रित सत्र मैं कुछ महीने पहले कंपनी छोड़ने वाले मेरे सहयोगियों में से एक द्वारा बनाई गई पुरानी एएसपीनेट साइट से एक समस्या का विश्लेषण कर रहा हूं।एएसपीनेट साइट
समस्या यह है कि हम कई बार expierenced है कि दो उपयोगकर्ताओं सत्र, मिश्रित कर रहे हैं ताकि अगर उदाहरण के लिए दो उपयोगकर्ताओं में लॉग इन किया, एक उपयोगकर्ता अन्य उपयोगकर्ताओं के डेटा को देखता है। चूंकि यह बहुत ही कम होता है (एक महीने या तो एक बार में) यह पता लगाना मुश्किल है कि क्या गलत है।
मैं अब प्रमाणीकरण के लिए अपने कोड के माध्यम से कदम रखा है और यह इस प्रकार है:
- उपयोगकर्ता एक MySQL में कोड की जाँच करता masterpage पर
- प्रस्तुत
Page_Load
पर सार्वजनिक पेज और प्रेस पर उपयोगकर्ता नाम/पासवर्ड दर्ज डेटाबेस है कि उपयोगकर्ता नाम/पासवर्ड मान्य है, आदि समाप्त हो गई है और एक अद्वितीय userid अगर ठीक - पेज तो इस तरह सत्र में loginpage बचाता वापस नहीं (बाद लॉगआउट के लिए इस्तेमाल किया):
HttpContext.Current.Session(Consts.CCookieName_LoginUrl) = Request.RawUrl
- फिर userid इस तरह सहेजा जाता है:
FormsAuthentication.SetAuthCookie(userid, False)
- फिर सुरक्षित क्षेत्र के लिए एक रीडायरेक्ट किया जाता है:
userid = Context.User.Identity.Name
- उपयोगकर्ता डेटा लोड किया जाता है अनुसार:
Context.Response.Redirect(secureurl, False)
- सुरक्षित क्षेत्र की masterpage की
Page_Init
में userid द्वारा पढ़ा जाता है उपयोगकर्ता आईडी - उपयोगकर्ता सुरक्षित क्षेत्र, यानी। कदम 6 - 7 दोहराया है
- उपयोगकर्ता suddently एक और उन डेटा
मैं क्या गलत हो रहा है पर कुछ विचार है देखता है, लेकिन है, इसलिए कृपया किसी को भी कोड को संशोधित करने से पहले कुछ इनपुट चाहते हैं?
हम भी एएसपीनेट फॉर्म प्रमाणीकरण का उपयोग करते हैं और इसके बारे में कम रिपोर्ट करते हैं, हम इस मुद्दे को दोबारा नहीं कर पाएंगे और दुर्भाग्य से इसे डीबग कर सकते हैं। मुझे आशा है कि कोई और कुछ और उपयोगी जोड़ सकता है। –
इस स्वीकृत उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/6441182/aspx-global-instance-of-class-possible-bug-in-code-structure/6441357#6441357 मैं इस मुद्दे को हल करता हूं – Muleskinner
क्या आप किसी भी प्रकार के कैशिंग का उपयोग कर रहे हैं? –