2011-09-02 14 views
11

मैं अपने एमवीसी 3 एप्लिकेशन पर क्लाइंट से क्लिक को संसाधित करने के लिए सिग्नलआर का उपयोग कर रहा हूं।मैं लॉग इन उपयोगकर्ता को नियंत्रक के बाहर से कैसे एक्सेस कर सकता हूं?

प्रत्येक बार जब कोई उपयोगकर्ता कुछ क्लिक करता है, तो मुझे लॉग इन उपयोगकर्ता को सत्यापित करने की आवश्यकता होती है।

यदि यह एक MVC3 नियंत्रक के अंदर थे, मुझे जाना होगा:

if (User.Identity.IsAuthenticated) 
{ 
    string username = User.Identity.Name; 

    //My code here. 
} 

हालांकि, इस कोड निष्पादन एक नियंत्रक वर्ग के अंदर नहीं है।

असल में, मैं नियंत्रक के बाहर से लॉग इन उपयोगकर्ताओं के नाम तक कैसे पहुंच सकता हूं?

उत्तर

14

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

यह उस स्थान पर निर्भर करता है जहां आप उन्हें एक्सेस करना चाहते हैं। अगर आपके पास HttpContext तक पहुंच नहीं है तो आप हमेशा HttpContext.Current.User आज़मा सकते हैं और प्रार्थना कर सकते हैं कि यह कुछ कारणों से शून्य नहीं होगा जैसे उदाहरण के लिए अलग थ्रेड या कुछ और। यह सिग्नलआर के साथ विशेष रूप से अधिक संभव है जो कार्य और असीमित प्रक्रियाओं पर निर्भर करता है।

public class Chat: Hub 
{ 
    public void Foo() 
    { 
     string username = Context.User.Identity.Name; 
    } 
} 

व्यक्तिगत तौर पर मैं क्या तुमने कभी HttpContext.Current उपयोग की अनुशंसा नहीं होगा: यदि यह एक SignalR के हब के अंदर है आप उपयोगकर्ता की पहुंच है। आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं और जहां मैं आपको गारंटी देता हूं कि इस पर निर्भर करता है कि बेहतर तरीके हैं।

+0

मैंने इसे HttpContext.Current का उपयोग करके बाहर करने की कोशिश की है और यह काम करता है। आपके द्वारा वर्णित कुछ नुकसान क्या हैं? यह संदर्भ कैसे शून्य होगा? आप क्यों सलाह देते हैं कि मैं इसका कभी भी उपयोग नहीं करता? –

+0

@ सर्जीओ तापिया, यदि आप जिस कोड को निष्पादित कर रहे हैं, तो संदर्भ कुछ पृष्ठभूमि धागे पर उदाहरण के लिए शून्य होगा। आपने मेरे प्रश्न का उत्तर नहीं दिया: आप इस जानकारी तक पहुंचने का प्रयास कहां कर रहे हैं? –

+0

आह मैं देख रहा हूं कि आप क्या कह रहे हैं, संदर्भ हब क्लास का हिस्सा है। क्या तुम्हारे कहने का मतलब यही था? मुझे 'HttpContext' के बजाय' संदर्भ 'का उपयोग करना चाहिए? –