2010-02-15 18 views
14

मुझे एएसपी.नेट एमवीसी में सत्र चर का उपयोग करके खिंचाव मिल गया है।asp.net mvc - उपयोगकर्ता आईडी को स्टोर करने के लिए - पूर्णांक?

एक बार एक उपयोगकर्ता में लॉग करता है, मैं इतना है कि मैं यह सब समय आदि

ASP.NET MVC में ऐसा करने के लिए सबसे कारगर तरीका क्या है क्वेरी करने के लिए की जरूरत नहीं है उपयोगकर्ता के userId बनाए रखना चाहते हैं ?

उत्तर

18

मैंने कुछ समय में इसी तरह के प्रश्न पॉप अप किए हैं और मुझे यह पता नहीं लगाया जा सकता है कि यह "vibe" कहां से आ रहा है। यह सत्र सत्र से संबंधित जानकारी संग्रहीत करने के लिए विशेष रूप से डिज़ाइन किया गया है। उपयोगकर्ता आईडी या इसी तरह की जानकारी स्टोर करने के लिए सत्र का उपयोग करने में बिल्कुल कुछ भी गलत नहीं है।

+0

धन्यवाद! * टिप्पणी filler *। –

+2

खिंचाव लोगों से प्रमाणीकरण के रूप में गलत तरीके से उपयोग कर रहा है जो वास्तव में प्रोजेक्ट कर रहा है। – jfar

+1

मैंने सोचा कि सदस्यता/प्रोफाइल प्रदाता ने यह सब आपके लिए संभाला है, जिसका उपयोग माइक्रोसॉफ्ट द्वारा किया जाता है। वे नमूना ऐप पर एक उदाहरण भी शामिल करते हैं। –

0

सत्र राज्य। उचित नहीं होने पर इसका उपयोग नहीं करना चाहिए। लेकिन कुछ भी प्रमाण पत्र के लिए काफी काम करता है। बस सुनिश्चित करें कि वे serializable हैं, ताकि जब आप की आवश्यकता हो तो आप प्रक्रिया से बाहर सत्र को धक्का दे सकते हैं।

+1

"लेकिन कुछ भी क्रेडेंशियल्स के लिए काफी काम करता है" क्या? कुकीज़ और फॉर्म प्रमाणीकरण की तरह? कुकीज़ सत्र से 1000% अधिक स्थिर हैं। – jfar

+0

आप केवल सत्र की जांच क्यों नहीं कर सकते हैं और यदि उपयोगकर्ता उपलब्ध नहीं है तो उपयोगकर्ता फिर से लॉगिन कर सकता है? मैं काफी पालन नहीं करता क्यों कुकीज़ बेहतर हैं। –

+0

और मैं बहस नहीं कर रहा हूं - मैं वास्तव में इसके बारे में अधिक जानना चाहता हूं। –

2

सत्रों का उपयोग राज्यव्यापी उपयोगकर्ता इंटरैक्शन के लिए किया जाना है - एक शॉपिंग कार्ट दिमाग में आता है। उन्हें नीचे देखा जाता है क्योंकि वे परीक्षण करने के लिए दर्दनाक होते हैं और नियंत्रक में धारावाहिक तर्क को मजबूर करते हैं। यदि आप सिर्फ प्रश्नों को कम करना चाहते हैं, तो आपको कैशिंग का उपयोग करना चाहिए।

संपादित करें: HttpContext.Cache के लिए ट्यूटोरियल आश्चर्यजनक रूप से आने के लिए कठिन हैं। स्टीवन सैंडर्सन में प्रो एएसपीनेट एमवीसी फ्रेमवर्क (अप्रेस 200 9) पी ~ 4 पेज हैं। 530-534।

Caching in asp.net-mvc आपको कुछ संकेत भी दे सकता है।

+0

क्या आप एएसपीएनटी एमवीसी कैशिंग के लिए एक लिंक पोस्ट कर सकते हैं? – TPR

8

आपको सही खिंचाव मिला है। यह कई परिदृश्यों में जरूरी नहीं है। सत्र स्थिति को आसानी से खोया जा सकता है और अक्सर लॉग इन उपयोगकर्ता को संभालने के लिए दुरुपयोग किया जाता है (जिस उपयोगकर्ता को लॉग इन किया जाता है उसे सत्र ["IsLoggedIn"] = सत्य सेट करके या सत्र ["उपयोगकर्ता"] की जांच करके किया जाता है! = शून्य, अचानक सत्र गायब हो जाता है और उपयोगकर्ता लॉग आउट है), जब फॉर्म प्रमाणीकरण का उपयोग किया जाना चाहिए। यहाँ आप रूपों प्रमाणीकरण और इसके साथ भंडारण के लिए अतिरिक्त डेटा के बारे में पढ़ सकते हैं:

Forms Authentication Configuration and Advanced Topics

आप अभी भी सत्र का उपयोग करना चाहते हैं, तो यह इसे और अधिक परीक्षण योग्य और कोड में तार से छुटकारा पाने के बनाने के लिए आवरण बनाने के लिए अच्छा है:

Wrapper for ASP.NET Session

+0

क्या आप फॉर्म ऑथ का उपयोग नहीं करेंगे और फिर सत्र में उपयोगकर्ता नाम, आदि स्टोर करेंगे? –

+1

@ d03boy: उपयोगकर्ता नाम डिफ़ॉल्ट रूप से प्रपत्र प्रमाणीकरण कुकी में संग्रहीत है।आप उपयोगकर्ता की आईडी जोड़ सकते हैं। यदि आप सत्र खो देते हैं (और यह कई परिस्थितियों में हो सकता है, उदाहरण के लिए जब कोई web.config बदलता है), तो आपके पास अपना डेटा सुरक्षित स्थान पर है और इसे पुनर्निर्माण करने की आवश्यकता नहीं है। ठीक है, आप सत्र का उपयोग कर सकते हैं, लेकिन याद रखें कि उपयोगकर्ता लॉग इन होने पर इसे खोया जा सकता है। – LukLed

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