2010-05-04 8 views
6

बदलें मैं सोच रहा था कि जेनेरिक प्रिंसिपल को अपने स्वयं के कस्टम जेनरिक प्रिंसिपल के साथ बदलने का सबसे अच्छा तरीका क्या है।Asp.net: जेनेरिक प्रिंसिपल

इस समय मेरे पास ऐसा कुछ है लेकिन मुझे यकीन है कि यह सही है या नहीं।

Bind<ICustomPrincipal>().ToMethod(x => (ICustomPrincipal)HttpContext.Current.User) 
         .InRequestScope(); 

तो सबसे अच्छा तरीका है GenericPrincipal को बदलने के लिए क्या करना है:

protected void Application_AuthenticateRequest(Object sender, EventArgs e) 
{ 
    HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
    if (authCookie != null) 
    { 
     FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
     var identity = new CustomIdentity(authTicket); 
     var principal = new CustomPrincipal(identity); 

     Context.User = principal; 
    } 
    else 
    { 
     //Todo: check if this is correct 
     var genericIdentity = new CustomGenericIdentity(); 
     Context.User = new CustomPrincipal(genericIdentity); 
    } 
} 

मैं इसे बदलने के लिए क्योंकि मैं एक प्रधान है कि मेरे ICustomPrincipal इंटरफ़ेस लागू करता है की जरूरत की जरूरत है क्योंकि मैं Ninject के साथ निम्न कर रहा हूँ?

अग्रिम धन्यवाद,

Pickels

उत्तर

5

आप एक सूक्ष्म विस्तार याद कर रहे हैं, धागा।

Context.User = Thread.CurrentPrincipal = new CustomPrincipal.... 

आपको वहां जाना होगा जहां आपको जाना होगा।

इसके अलावा मुझे लगता है कि आप उल्लेख करते हैं कि आपको केवल प्रिंसिपल को प्रतिस्थापित करने की आवश्यकता है। यदि ऐसा है, तो आप फॉर्म्स इडेंटिटी का पुन: उपयोग कर सकते हैं जो नीचे दिखाए गए अनुसार आपके लिए पहले से ही बनाया गया है।

Context.User = Thread.CurrentPrincipal = new CustomPrincipal(Context.User.Identity /*, add roles here if desired*/); 
+0

उत्तर और अतिरिक्त युक्ति के लिए धन्यवाद। – Pickels

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