2013-03-14 14 views
6

में जोड़ता है मुझे लगता है कि मेरे पास एएसपीएनटी एमवीसी 4 में प्रमाणीकरण के बारे में एक साधारण सवाल है 4. एक बात जो मुझे स्पष्ट नहीं है कि मैं उपयोगकर्ता डेटा जोड़/क्रमबद्ध कर सकता हूं प्राधिकरण कुकी में। प्रमाणीकरण कुकी में उपयोगकर्ता डेटा को सत्र में उपयोगकर्ता डेटा जोड़कर लाभ उठाने के लाभ/व्यापार बंद क्या हैं? क्या मुझे प्रमाणीकरण कुकी में उपयोगकर्ता को कुछ अद्वितीय रखने की भी आवश्यकता है? क्या मुझे सभी उपयोगकर्ता डेटा को क्रमबद्ध करना चाहिए और उसे कुकी में रखना चाहिए और उपयोगकर्ता डेटा को स्टोर करने के लिए सत्र का उपयोग नहीं करना चाहिए?एएसपी.नेट एमवीसी उपयोगकर्ता डेटा फॉर्म प्रमाणीकरण कुकी बनाम सत्र

मेरा आवेदन बहुत आसान है और इसमें कोई भूमिका नहीं है। मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि यदि आवश्यक हो तो यह अच्छी तरह से स्केल करेगा।

अभी के लिए, मैं सिर्फ उपयोगकर्ताओं को प्रमाणीकरण कुकी में ईमेल डालता हूं और उपयोगकर्ता ऑब्जेक्ट को सत्र में जोड़ता हूं। मैं उपयोगकर्ता को अधिकृत करने के लिए निम्न कोड का उपयोग कर रहा हूं:

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
     1, 
     user.Email, 
     DateTime.Now, 
     DateTime.Now.AddMinutes(15), 
     false, 
     user.Email); // adding the user email in the authTicket 
string encTicket = FormsAuthentication.Encrypt(authTicket); 
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
Session["User"] = user; //adding user data to session 
Response.Cookies.Add(faCookie); 

return RedirectToAction("Summary", "Account"); 

मैं वास्तव में किसी भी अंतर्दृष्टि की सराहना करता हूं। धन्यवाद!

उत्तर

12

एएसपी.NET सत्र के साथ समस्या यह है कि डिफ़ॉल्ट रूप से यह स्मृति में संग्रहीत है। इसका अर्थ यह है कि यदि आप किसी वेब फार्म में चल रहे हैं तो आपको अपने सत्र के लिए प्रक्रिया के बाहर की दृढ़ता का उपयोग करने की आवश्यकता होगी, अन्यथा आपके वेबफर्म में सभी नोड्स की एक ही जानकारी नहीं होगी। तो आपको SQL सर्वर में अपने सत्रों को जारी रखने की आवश्यकता होगी जो फॉर्म प्रमाणीकरण कुकी से उपयोगकर्ता डेटा को पढ़ने से कहीं अधिक महंगा है।

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

तो दिन के अंत में, यदि आप कभी भी एएसपी.NET सत्र का उपयोग शुरू करने का निर्णय लेते हैं तो आपको अधिक जटिल समस्याएं हल करनी होंगी (जो कि सभी अनुरोधों पर कुछ उपयोगकर्ता जानकारी को जारी रखना था)।

+0

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

+1

नहीं, आपको बहुत सारे डेटा नहीं डालना चाहिए। आपको उपयोगकर्ता के बारे में सभी पृष्ठों पर उपयोग की जाने वाली कुछ न्यूनतम मात्रा में डेटा रखना चाहिए। यदि आपको अधिक डेटा चाहिए, तो आप अंतर्निहित डेटा स्टोर से पुनर्प्राप्त करने के लिए अपने प्रोफाइल प्रदाता से पूछ सकते हैं। और यदि आप प्रत्येक अनुरोध पर डेटा स्टोर में महंगे कॉल से बचना चाहते हैं तो आप सर्वर पर कैश का उपयोग कर सकते हैं (लेकिन आपको एएसपी.NET सत्र के समान समस्याओं को हल करना होगा)। –

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