के साथ आईओसी सदस्यता प्रदाता को एकीकृत करने के लिए कैसे करें मेरे पास एक कस्टम सदस्यता/भूमिका प्रदाता है जो मैं अपने एमवीसी नियंत्रकों में उपयोग करता हूं कि मैं एएसपी.नेट एमवीसी के लिए भी पहुंच प्राप्त करना चाहता हूं, इसलिए मैं प्राधिकरण फ़िल्टर आदि का उपयोग कर सकता हूं। के बाद से इतने सारे लोगों कस्टम प्रदाताओं को लागू किया है मुझे लगता है कि कई लोगों को यह किया है लेकिन मैं इसे समझ नहीं किया है बाहर या पाया पोस्टिंग कि इस समस्या को विशेष रूप से संबोधित करते हैं। This post मेरे प्रश्न का एक फ्लिप पक्ष है। मेरे मामले में मेरे पास मेरे कस्टम प्रदाता मेरे नियंत्रकों के साथ अच्छी तरह से काम कर रहा है, और मैं एमवीसी को भी इसका उपयोग करना चाहता हूं।एएसपी.NET एमवीसी
मेरे प्रदाता एक आईओसी/निर्भरता इंजेक्शन डिजाइन के साथ किया जाता है। प्रदाता बेसलाइन सदस्यता/भूमिका एपीआई से परे अतिरिक्त कार्यक्षमता का खुलासा करता है। मेरे नियंत्रकों में, मैं उदाहरण बनाने के लिए कैसल विंडसर का उपयोग करता हूं। कोड दिखता समान करने के लिए:
public class HomeController : Controller {
IMembershipService _membershipService;
public HomeController(IMembershipService membershipService) {
_membershipService= membershipService;
}
}
<castle>
<components>
<component id="MembershipService"
service="IMembershipService, MyApp"
type="MembershipService, MyApp" lifestyle="PerWebRequest">
<parameters>
<connectionString>#{defaultConnectionString}</connectionString>
</parameters>
</component>
</components>
</castle>
public class WindsorControllerFactory : DefaultControllerFactory {
private WindsorContainer _container;
public WindsorControllerFactory() {
_container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
List<Type> controllerTypes = new List<Type>();
foreach (Type t in Assembly.GetExecutingAssembly().GetTypes()) {
if (typeof(IController).IsAssignableFrom(t))
controllerTypes.Add(t);
}
foreach (Type t in controllerTypes) {
// LifestyleType.Transient = new controller instance for each request
_container.AddComponentLifeStyle(t.FullName, t, LifestyleType.Transient);
}
}
protected override IController GetControllerInstance(Type controllerType) {
return (IController)_container.Resolve(controllerType);
}
यह सब मेरी सी # कोड में अच्छा काम करता है, लेकिन मैं इसके साथ उपयोग करने के लिए फिल्टर [अधिकृत करें] MVC में मेरी प्रदाता तार करना चाहते हैं:
[Authorize (Users="user1, user2", Roles="role8")]
public ViewResult MyResult(int x) {
// implement
}
मैं जानता हूँ कि एक कस्टम सदस्यता या भूमिकाओं प्रदाता के बारे में बताने के लिए ASP.NET हमेशा की तरह के रूप में नीचे web.config फ़ाइल में है लेकिन अगर मैं ऐसा करते हैं ASP.NET बस डिफ़ॉल्ट निर्माता है, जो काम नहीं करेगा कॉल करने के लिए कोशिश करेंगे। किसी भी मदद की सराहना की।
<membership>
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyMembershipProvider">
</providers>
</membership>
इस के लिए धन्यवाद। जबकि आपकी पहली विधि ठीक काम करती है, जैसा कि आपने कहा है कि कस्टम आईप्रिनिपियर/IIdentity कक्षाएं बनाना अधिक लचीलापन प्रदान करता है। उदाहरण के लिए, फॉर्म प्रमाणीकरण प्रदान करने से कुछ अलग प्रकार के उपयोगकर्ता/भूमिका प्राधिकरण बनाने के लिए यह एक छोटा रास्ता है। – keithm
ऐसा लगता है कि वेबडॉटनेट प्रोजेक्ट वर्तमान में अपने भंडार को मर्क्यूरियल में ले जा रहा है, लिंक टूटा हुआ है :-( –
वेबडॉटनेट प्रोजेक्ट अप :-) –