2009-02-19 22 views
5

उपयोग करते हुए मेरे ASP.NET वेब आवेदन में जांच, मैं हर बार उपयोगकर्ता अपने आवेदन से एक पृष्ठ पर पाने के लिए कोशिश कर रहा है की जाँच करने के लिए उपयोगकर्ता पहली बार हम सहेजने के बाद निश्चित रूप से (DB में मौजूद है, तो चाहते हैं सत्र में उपयोगकर्ता विवरण)। मैंने global.asax में Application_AuthenticateRequest ईवेंट का उपयोग करने की कोशिश की प्रत्येक अनुरोध की जांच करें लेकिन सत्र इस घटना में मौजूद नहीं है। मैं कहाँ मैं अपने प्राधिकरण तर्क यह है कि मैं अभी भी सत्र डेटा उपलब्ध होता रख सकते हैं के लिए एक सलाह की जरूरत है (db पहुँच कम करने के लिए)।प्राधिकरण Global.asax

उत्तर

1

आप SqlMembershipProvider (या एक कस्टम प्रदाता अगर आप MSSQL उपयोग नहीं कर रहे) का उपयोग करें और प्रवेश पृष्ठ से छोड़कर पूरे आवेदन से अप्रमाणित उपयोगकर्ताओं से इनकार कर सकता है। यह चेक लॉगऑन के समय तक सीमित रहेगा क्योंकि प्रमाणीकरण टिकट या तो सत्र में या उपयोगकर्ता की मशीन पर कुकी के रूप में संग्रहीत किया जाएगा। How To: Use Membership in ASP.NET 2.0 पर

अधिक जानकारी और Examining ASP.NET 2.0's Membership, Roles, and Profile

5

आप ध्वनि जैसे कि आप प्रमाणीकरण प्रणाली "अपनी खुद की रोलिंग" कर रहे हैं।

मैं Forms authentication सिस्टम में निर्मित एएसपी.NET का उपयोग करने में देखता हूं जिसका उपयोग आमतौर पर एएसपी.NET Membership Provider के साथ किया जाता है। अंतर्निहित प्रदाता SQL सर्वर के लिए पहले से मौजूद हैं, और आप System.Web.Security.MembershipProvider बेस क्लास से विरासत में अपना स्वयं का सदस्यता प्रदाता बना सकते हैं।

अनिवार्य रूप से, एएसपी.NET सदस्यता प्रदाता आमतौर पर क्लाइंट साइड कुकी (जिसे प्रमाणीकरण टिकट के रूप में भी जाना जाता है) को क्लाइंट के ब्राउज़र में सेट करके काम करते हैं, जब क्लाइंट ने सफलतापूर्वक प्रमाणित किया हो। यह कुकी प्रत्येक अनुवर्ती पृष्ठ के अनुरोध पर वेब सर्वर के लिए दिया जाता है, ASP.NET अनुमति देता है, और इस तरह अपने कोड, निर्धारित करने के लिए जो उपयोगकर्ता, आम तौर पर तो जैसे कोड की एक लाइन के साथ:

string username = HttpContext.Current.User.Identity.Name; 
// The above gets the current user's name. 

if(HttpContext.Current.User.Identity.IsAuthenticated) 
// Do something when we know the user is authenticated. 

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

<authorization> 
    <deny users="?"/> 
</authorization> 

:

निर्मित रूपों प्रमाणीकरण का इस्तेमाल करके आप "रक्षा" करने के लिए सरल कथात्मक कोड है कि अपने web.config में चला जाता है, उदाहरण के लिए के साथ अन-अधिकृत उपयोगकर्ताओं से अपनी वेबसाइट के क्षेत्रों की अनुमति देगा उपरोक्त को अपने "मुख्य" web.config में जोड़ना यह सुनिश्चित करेगा कि आपके कोई भी पृष्ठ अनधिकृत उपयोगकर्ताओं तक पहुंच योग्य नहीं है (हालांकि आप शायद इसे वास्तविकता में कभी नहीं करेंगे - यह सिर्फ एक उदाहरण के रूप में है)। सदस्यता प्रदाता के साथ संयोजन के रूप में ASP.NET Role Provider का उपयोग करके आप या आपकी वेबसाइट के विभिन्न वर्गों तक नहीं पहुँच सकता सकता है जो अधिक और भी अधिक विवरण के स्तर को दे देंगे।

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