9

मुझे अपने एक्शन फ़िल्टर में वर्तमान में लॉग इन किए गए उपयोगकर्ता तक पहुंचने की आवश्यकता है। पहचान को DelegatingHandler द्वारा निष्पादन की श्रृंखला को आगे बढ़ाया गया है।WebApi ActionFilterAttribute, HttpActionContext एक्सेस उपयोगकर्ता नाम (IPrincipal)

मैं कर सकते हैं पहुँच वर्तमान IPrincipalHttpContext.Current.User का उपयोग कर। अब तक मैंने HttpContext.Current का उपयोग करने से बचा है क्योंकि यह मुझे खराब शैली के रूप में दिखाई देता है। आपका पहला कोड केवल आईआईएस में होस्ट किए जाने पर ही काम करेगा और दूसरी बार इसमें System.Web का संदर्भ शामिल होगा जो मुझे लगता है कि चोट नहीं पहुंची है, लेकिन यदि संभव हो तो मैं System.Net.Http के साथ रहना पसंद करूंगा। अच्छा पुराना "HttpContext" पर भरोसा करना गलत लगता है।

क्या ActionFilter के भीतर उपयोगकर्ता की पहचान तक पहुंचने का कोई अन्य तरीका है? या यदि आप स्वयं होस्ट किए गए एप्लिकेशन को चलाने की योजना नहीं बनाते हैं तो HttpContext का उपयोग करना ठीक है?

+0

डॉन .. मैं वास्तव में प्रश्न पोस्ट करने से पहले वास्तव में अच्छी तरह से खोज करता हूं। 5 मिनट बाद मेरे पास दो कामकाजी उत्तर हैं :( – lapsus

उत्तर

16

मैंने स्पष्ट रूप से अनदेखा किया। मुझे नहीं पता था कि ControllerContext के अंदर एक नियंत्रक संपत्ति थी।

var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name; 
+11

वेब एपीआई v2 'actionContext.RequestContext.Principal' में चाल चलती है। – cleftheris

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