2009-08-29 7 views
27

प्राधिकृत टैग कैसे निर्धारित करता है कि उपयोगकर्ता अधिकृत है या नहीं?प्राधिकृत टैग कैसे काम करता है? - एएसपी.नेट एमवीसी

कहें, यदि कोई उपयोगकर्ता लॉग इन करता है और वे उस दृश्य पर जाने का प्रयास करते हैं जिसमें अधिकृत टैग है। यह कैसे निर्धारित करता है कि कोई उपयोगकर्ता अधिकृत है या नहीं? क्या यह डेटाबेस के लिए एक क्वेरी करता है और जांचता है?

कैसे वे भूमिका प्राधिकरण के साथ देखने के लिए जाते हैं? क्या यह सदस्यता भूमिका तालिका से पूछताछ करता है?

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

इससे मुझे .NET सदस्यता सामग्री के लिए कस्टम तरीकों को लिखना पड़ा क्योंकि यह उपयोगकर्ता आईडी का उपयोग करने के बजाय खोज करने के लिए "userName" का उपयोग करता था।

तो अब मैं सोच रहा हूं कि यह प्राधिकृत टैग के मामले में हो सकता है या नहीं। चूंकि मेरे पास कोई सुराग नहीं है कि यह कैसे काम करता है और जैसे कि मैं .NET सदस्यता का उपयोग नहीं कर रहा था, मुझे कोई संकेत नहीं होगा कि यह कैसे निर्धारित करेगा।

+0

मेरे पास आपके प्रश्न का सीधा जवाब नहीं है, लेकिन याद रखें कि एएसपी.नेट एमवीसी ओपन सोर्स है और आप इसे स्वयं देख सकते हैं। मुझे लगता है कि यह सिर्फ सदस्यता प्रदाता से पूछता है। – JoshJordan

उत्तर

24

Authorize टैग एएसपी.नेट से सभी सदस्यता सदस्यता चेक का उपयोग करता है। अपने स्वयं के टैग की भूमिका निभाना बहुत आसान है। उदाहरण के लिए:

public class MyAuthorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) throw new ArgumentNullException("httpContext"); 

     // Make sure the user is authenticated. 
     if (httpContext.User.Identity.IsAuthenticated == false) return false; 

     // Do you own custom stuff here 
     bool allow = CheckIfAllowedToAccessStuff(); 

     return allow; 
    } 
} 

फिर आप [MyAuthorize] टैग जो अपने कस्टम चेकों का उपयोग करेगा उपयोग कर सकते हैं।

+0

सदस्यता में निर्माण कैसे काम करता है? क्या यह उपयोगकर्ता नाम या यूरआईडी का उपयोग करता है? – chobo2

+0

मैं 100% निश्चित नहीं हूं लेकिन मुझे लगता है कि मुख्य रूप से httpContext.User.Identity.Is प्रमाणीकृत और इसकी कीमत वापस लौटाता है लेकिन मुझे पता है कि इसमें भी भूमिकाओं की जांच करने की क्षमता है। – Kelsey

+0

हम्म मुझे नहीं पता कि यह काम नहीं कर रहा है मैं अभी भी पेज देख सकता हूं। यह सिर्फ मेरे यूआरएल में वापसी यूआरएल डालता है और इसके बारे में है। – chobo2

14

ControllerActionInvoker विशेषता को पार करता है और क्रेडेंशियल्स की जांच करने के समय OnAuthorization() पर कॉल करता है।

AuthorizationAttribute.OnAuthorization() विधि मूल रूप से यह देखने के लिए जांचती है कि User.Identity.IsAuthenticated सत्य है या नहीं। यह सिर्फ फॉर्म प्रमाणीकरण की कार्यक्षमता या आप जो भी अन्य प्रमाणीकरण योजना का उपयोग कर रहे हैं, की कार्यक्षमता पर आकर्षित करता है।

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