मैं एक एएसपीएनटी एमवीसी वेब एपीआई एप्लीकेशन बना रहा हूं और यह सुनिश्चित नहीं करता कि सदस्यता सामग्री कैसे करें।भूमिका प्रदाता/सदस्यता? एएसपीनेट वेब एपीआई में कैसे करें?
मेरे वर्तमान परियोजना में मैं इस
मेरा अपना Users Table
और Role Table
मैं asp.net सदस्यता उपयोग नहीं कर रहा है क्योंकि यह बहुत अधिक सामान लाता है और फिट नहीं करता है कैसे मैं अपने डेटाबेस डिजाइन करने के लिए (चाहते मैं यह कर सकते हैं के लिए यह लेकिन यह सिर्फ ज्यादा काम करने के लिए की तरह लगता है)
एक user
कई भूमिकाओं हो सकता है और एक role
कई उपयोगकर्ताओं हो सकता है।
मैं डेटाबेस में लगभग सभी कॉल करने के लिए ईएफ का उपयोग कर रहा हूं।
पिछली परियोजनाओं में मैंने अपना खुद का Authorize Attribute
बनाया है जो मेरे डेटाबेस पर अपना स्वयं का कॉल करता है और यह देखने के लिए जांच करता है कि उपयोगकर्ता उस नियंत्रक/क्रिया विधि पर क्या अनुमति थी, सही भूमिका में था या नहीं।
कोई सदस्यता प्रदाता नहीं कर रहा है, मैंने User.IsInRole
जैसे कुछ अंतर्निहित कार्यों पर खो दिया है। मैं अभी भी User.Identity.Name
का उपयोग करने में सक्षम था लेकिन मुझे लगता है कि मेरे द्वारा सेट की गई कुकी के कारण था।
एएसपीनेट एमवीसी 4/वेब एपीआई में अब इसे करने का सबसे अच्छा तरीका क्या है?
जबकि गुगलिंग के दौरान मुझे "सरल स्मृति" मिला लेकिन अभी तक इसमें बहुत कुछ नहीं पढ़ा है।
यदि मैं किसी उपयोगकर्ता को प्रमाणित करता हूं तो क्या मैं अपने वेबपै के साथ User.Identity.Name
का उपयोग कर सकता हूं?
उपयोगकर्ता के बारे में कैसे .Identity.Name यह एएसपीनेट वेबपीआई में कैसे सेट हो जाता है? पिछले एमवीसी 3 एप में मैंने अपने कस्टम प्राधिकरण में यह विशेषता दी थी: httpContext.User.Identity.Name और फिर मैंने उस नाम के साथ अपनी स्वयं की सेवा परत का उपयोग किया ताकि यह पता चल सके कि उपयोगकर्ता के पास कौन सी अनुमतियां थीं। क्या मैं httpContext.User.Identity.Name का उपयोग कर सकता हूं जैसा कि मैंने सोचा था कि कुकी द्वारा सेट किया गया है? – chobo2
हां, आपके पास एक कस्टम प्राधिकृत विशेषता हो सकती है और संबंधित उपयोगकर्ता को 'Thread.CurrentPrincipal' सेट कर सकते हैं। मैंने लिखा एक नमूना कार्यान्वयन पर एक नज़र डालें जो मूल प्रमाणीकरण के साथ सदस्यता प्रदाता का उपयोग कर रहा है: http://stackoverflow.com/a/11536349/29407 इस उदाहरण में मैंने एक कस्टम प्रतिनिधि हैंडलर का उपयोग किया लेकिन आप एक प्राधिकरण फ़िल्टर का उपयोग कर सकते हैं यदि आप साथ ही चाहते हैं –
कूल जो बहुत उपयोगी है। हालांकि कुछ सवाल मिला। Async क्यों? आपको हैंडलर को पंजीकृत क्यों करना है (मैंने नहीं किया और उपयोगकर्ता। छवि भर दी गई है लेकिन मैंने एसिंक नहीं बनाया है), भूमिकाओं को भरने के लिए क्यों सुनिश्चित करें कि उन्हें कैसे पहुंचाया जाए। – chobo2