मैंने एक कस्टम AuthorizeAttribute बनाया है जो HTTP हेडर के अंदर भेजे गए कुछ OAuth प्रमाण-पत्रों को सत्यापित करता है। मैं यह पुष्टि करने के लिए इनमें से कुछ प्रमाण-पत्रों का उपयोग कर रहा हूं कि कौन अनुरोध कर रहा है। एक बार जब मैं AuthorizeAttribute में इस जानकारी को पार्स करता हूं तो इसे पास करने का कोई तरीका है ताकि डेटा नियंत्रक के आवृत्ति चर को असाइन किया जा सके? फिर मेरे नियंत्रक में कहीं भी मेरे पास अनुरोध करने वाली पार्टी की आईडी होगी।मैं AuthorizeAttribute से नियंत्रक को डेटा कैसे पास कर सकता हूं?
14
A
उत्तर
12
मूल जवाब
आप
_yourVariable = HttpContext.Items["test"];
आप शायद करना चाहते हैं कि आपके द्वारा कार्रवाई में अपने फ़िल्टर
filterContext.HttpContext.Items["test"] = "foo";
और फिर इस में ऐसा करने में सक्षम होना चाहिए "test"
से अधिक अनन्य कुंजी का उपयोग करें, लेकिन यह विचार है।
संपादित इसके दो कारण हम नहीं बल्कि निर्माता से कार्रवाई में ऐसा कर रहे हैं:
- A Controller's constructor fires before OnAuthorization, तो आइटम अभी तक सेट नहीं किया जाएगा।
- HttpContext अभी तक नियंत्रक के निर्माता में सेट नहीं है।
वैकल्पिक समाधान
OAuthController
में एक नयाOAuthController : Controller
- अवहेलना
OnAuthorization
- एक
protected
क्षेत्र सेटOAuthController.OnAuthorization
- में अपने फिल्टर से तर्क ले जाएँ (यानी,
protected object myAuthData
) बनाएं - अपने अन्य नियंत्रकों को से
Controller
- पर अपने अन्य नियंत्रक
myAuthData
तक पहुंच सकते हैं।
संबंधित मुद्दे
- 1. मैं रेलवे में एक नियंत्रक से वस्तुओं को दूसरे में कैसे पास कर सकता हूं?
- 2. मैं बाल दृश्य नियंत्रक से अभिभावक दृश्य नियंत्रक के दृश्य को कैसे एक्सेस कर सकता हूं?
- 3. मैं एक Magento नियंत्रक को ओवरराइड कैसे कर सकता हूं?
- 4. मैं एसओएपी हैंडलर से डेटा webservice क्लाइंट को वापस कैसे पास कर सकता हूं?
- 5. मैं एएसपीएक्स पेज से डेटा को एएक्सएक्स मोडल पॉपअप में कैसे पास कर सकता हूं?
- 6. मैं यूआरएल या रूट डेटा से नियंत्रक प्रकार और कार्य जानकारी कैसे प्राप्त कर सकता हूं?
- 7. क्या मैं कोडिग्निटर आउटपुट क्लास को डेटा प्रदर्शित किए बिना डेटा पास कर सकता हूं?
- 8. मैं SQL सर्वर से डेटा कैसे निर्यात कर सकता हूं?
- 9. मैं टेम्पलेट में फ्लास्क से जावास्क्रिप्ट में डेटा कैसे पास कर सकता हूं?
- 10. मैं पर्ल से जावा तक डेटा कैसे पास कर सकता हूं?
- 11. मैं दृश्य नियंत्रक से स्टोरीबोर्ड सेगू कैसे बना सकता हूं?
- 12. पॉको सी ++ लाइब्रेरी का उपयोग करके, मैं डेटा को थ्रेड में कैसे पास कर सकता हूं?
- 13. नियंत्रक नाम पास करके एमवीसी नियंत्रक के सभी कार्यों की सूची कैसे प्राप्त कर सकता हूं?
- 14. मैं टैब बार नियंत्रक से डेटा को अपने टैब में से कैसे पास करूं?
- 15. वेबएपी: फ़िल्टर से नियंत्रक को राज्य कैसे पास करें?
- 16. मैं रेल नियंत्रक से स्पष्ट रूप से एक दृश्य कैसे घोषित कर सकता हूं?
- 17. मैं एक्शन में पैरामीटर कैसे पास कर सकता हूं?
- 18. मैं टेबल को ठीक से कैसे छोटा कर सकता हूं?
- 19. मैं वसंत/हाइबरनेट में jdbc.properties कैसे पास कर सकता हूं?
- 20. मैं इस फ़ंक्शन में पैरामीटर कैसे पास कर सकता हूं?
- 21. मैं लॉग इन उपयोगकर्ता को नियंत्रक के बाहर से कैसे एक्सेस कर सकता हूं?
- 22. कोडनिर्देशक: नियंत्रक को फ़ॉर्म जमा करने से पहले मैं पासवर्ड कैसे एन्क्रिप्ट कर सकता हूं?
- 23. मैं एक कस्टम AuthorizeAttribute कैसे बना सकता हूं जो क्षेत्र, नियंत्रक और क्रिया के लिए विशिष्ट है?
- 24. मैं यूआरआई में जीईटी के माध्यम से "/" कैसे पास कर सकता हूं?
- 25. मैं स्प्रिंग एमवीसी 3 के साथ नियंत्रक में मॉडल से ऑब्जेक्ट कैसे प्राप्त कर सकता हूं?
- 26. मैं ऑब्जेक्ट्स को एक खुला लुज फ़ंक्शन में कैसे पास कर सकता हूं?
- 27. मैं रीस्टफुल पोस्ट डेटा कैसे लॉग कर सकता हूं?
- 28. क्या मैं एक एनम को नियंत्रक में पास कर सकता हूं ताकि मॉडल बाइंडर इसे बांध सके?
- 29. मैं Java3D को तेज़ी से कैसे शुरू कर सकता हूं?
- 30. मैं केकेपीएचपी में सत्र डेटा कैसे बना सकता हूं, लिख सकता हूं और पढ़ सकता हूं?
हम्म ... जब मैंने इस परिवर्तक को सेट करने के लिए अपने नियंत्रक को एक कन्स्ट्रक्टर जोड़ा, तो यह मेरे सभी मॉडल बाइंडिंग (एक त्रुटि फेंकता) तोड़ दिया। कोई अन्य विचार? – BigOmega
@ रयान मैं मूल रूप से यह मेरे जवाब में नोट किया था लेकिन इसे हटा दिया। शायद मुझे इसे वापस रखना चाहिए। वैसे भी, एक नियंत्रक का कन्स्ट्रक्टर ** ** प्राधिकरण से पहले ** आग लगाता है, इसलिए आइटम अभी तक सेट नहीं किया जाएगा। इसके अलावा, नियंत्रक के पास अभी तक एक HttpContext भी नहीं है। आपको इसे अपने कार्य में करने की ज़रूरत है। –
@Ryan एक विकल्प 'OAuthController: Controller' बनाने के लिए होगा, क्या मैंने लिंक किए गए पोस्ट में उल्लिखित 'ऑन-प्राधिकरण' को ओवरराइड किया है, क्या इसे 'संरक्षित' सदस्य सेट किया गया है, और आपके अन्य नियंत्रक इसे प्राप्त करते हैं। –