2013-02-14 23 views
14

मेरे पास एमवीसी 4 के आधार पर विंडोज प्रमाणीकरण के साथ इंट्रानेट एप्लिकेशन है।विंडोज प्रमाणीकरण और Asp.Net वेब एपीआई

जब मैं एक नियंत्रक में प्राधिकरण प्रयोजन के लिए WindowsIdentity जरूरत है मैं सिर्फ

HttpContext.User.Identity 

अब मैं कुछ अजाक्स के लिए कहता है नया Asp.Net वेबएपीआई उपयोग करना चाहता था का उपयोग करें।

क्या WindowsIdenty ऑब्जेक्ट को एक एमवीसी नियंत्रक के समान आसान तरीके से प्राप्त करने का कोई तरीका है?

उत्तर

24

कृपया नियंत्रक से HttpContext का संदर्भ न दें।

आप नियंत्रक User संपत्ति तक पहुंच सकते हैं जो HttpContext पर एक सही संदर्भ के बिना पहचान तक पहुंचने का तरीका है।

public class MyController : ApiController 
{ 
    public string Get() 
    { 
     var indenty = this.User.Identity; 
    } 
} 

क्यों

नियंत्रकों User संपत्ति जो आसान मजाक है और इस तरह इकाई परीक्षण के लिए अनुमति देता अमूर्त के एक स्तर प्रदान करता है। यह अमूर्तता भी अधिक पोर्टेबिलिटी के लिए अनुमति देता है उदा। अगर यह वेबएपी सेल्फ होस्ट था तो आपको HttpContext तक पहुंच भी नहीं होगी।

यूनिट परीक्षण कैसे करें और उपयोगकर्ता संपत्ति को नकली करने के तरीके के बारे में अधिक पढ़ने के लिए here पढ़ें। अधिक जानकारी के लिए पुन: पोर्टेबिलिटी here पढ़ें।

+2

एक छोटा सा स्पष्टीकरण: यदि आप पहचान उपयोगकर्ता को उपयोग करना चाहते हैं। Identity – agez

+0

बेशक। अपडेट किया गया, धन्यवाद। –

+1

वैसे मैं उत्तर की स्पष्टता की सराहना करता हूं, यह हर किसी के संपादन के लिए होगा यदि आपने समझाया कि कोई नियंत्रक से HttpContext का संदर्भ नहीं देगा। टिप्पणी के लिए – dansan

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