को HttpContext.Current.User.Identity पास करना थोड़ा सलाह (या शायद प्रत्यक्ष जवाब भी) ढूंढ रहे हैं।WCF
मैं एक MVC3 वेबसाइट है। मेरे पास डब्ल्यूसीएफ सेवाओं का एक सेट भी है (अब सबकुछ एक ही बॉक्स पर है)।
क्या मैं ग्राहक को प्रमाणित करना कोशिश कर (वह हिस्सा ठीक काम कर रहा है) कर रहा हूँ, तो पास उस पर उपयोगकर्ता प्रमाणीकृत विभिन्न WCF करने के लिए कहता है।
पल मैं Global.Asax
में Application_AuthenticateRequest()
विधि को झुका दिया है, जो एक नया GenericIdentity & GenericPrincipal
बनाने, तो HttpContext.Current.User
करने के लिए कि प्रिंसिपल बताए करने पर निर्भर करता पर:
...
GenericIdentity identity = new GenericIdentity(userName);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
...
और वह भाग रहा है के रूप में ठीक से काम कर रहा कुंआ।
लेकिन जब मैंने अपनी सेवा को मारा, तो मैंने सेट किए गए उपयोगकर्ता को पूरी तरह से खो दिया है। मान खाली या झूठे हैं।
एक मुख्य बात मैंने देखा है कि ग्राहक पक्ष पर, HttpContext.Current.User.Identity
ऑब्जेक्ट {System.Web.Security.FormsIdentity}
प्रकार है, लेकिन सेवा में यह {System.Security.Principal.WindowsIdentity}
है।
मैंने जो कुछ पढ़ा है उसके आधार पर, यह बस मेरे web.config
को संशोधित करने जैसा लगता है, इसलिए इसमें aspNetCompatibilityEnabled="true"
यह कार्य ठीक से करने के लिए पर्याप्त हो सकता है। लेकिन यह वह नहीं है जो मैं देख रहा हूं। तो या तो मैं सबकुछ समझ नहीं रहा हूं (एक बहुत अच्छी संभावना है) या मुझे कुछ खराब हो गया है (एक और अच्छी संभावना है)।
तो मेरे सवाल का। क्या यह भी संभव है, और यदि ऐसा है - मुझे क्या याद आ रहा है पर विचार? मैंने देखा कि कुछ अन्य ने कुछ ऐसा पोस्ट किया है लेकिन कभी भी एक निश्चित उत्तर प्राप्त नहीं हुआ है (here और here देखें)।
कोई सुझाव बहुत सराहना कर रहे हैं।
यह अजीब है कि आप कहते हैं कि तुम एक 'FormsIdentity' देखते हैं जब आप विशेष रूप से वर्तमान उपयोगकर्ता प्रसंग पर एक' GenericIdentity' की स्थापना कर रहे हैं। क्या तुमने वहां मिश्रण किया? –