authentication - मैं Asp.NET MVC 5 के लिए दावा IDentity ऑब्जेक्ट कैसे बना सकता हूं?




ravendb asp.net-mvc-5 (3)

मुझे लगता है कि आप "इस सब गलत के बारे में जा रहे हैं"। एएसपी.नेट पहचान फ्रेमवर्क को दिमाग में प्लग करने योग्य दृढ़ता के साथ बनाया गया है। EF के लिए RavenDB को प्रतिस्थापित करने का सही तरीका UserManager को प्रतिस्थापित नहीं करना है। इसके बजाय, यह एक प्रतिस्थापन UserStore को लागू UserStore । तो UserManager बनाता है जो AccountController में लाइन से बदल जाएगा:

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))

सेवा मेरे:

public AccountController()
    : this(new UserManager<ApplicationUser>(new RavenDBUserStore<ApplicationUser>/* connection info here*/)))

जहां RavenDBUserStore एक वर्ग होगा जिसे आपने लिखा था IUserStore , IUserPasswordStore और जो भी अन्य * स्टोर इंटरफेस को आपके विशेष एप्लिकेशन के लिए आवश्यक था, लागू किया गया था।

यह दृष्टिकोण आपको UserManager में सबकुछ समझने और पुन: लागू करने की आवश्यकता से बचाता है और यह सुनिश्चित करता है कि आप एमएस से उपयोगकर्ता UserManager में भविष्य में सुधार का लाभ उठा सकेंगे।

ऐसा करने के तरीके के बारे में अधिक जानकारी के लिए, एएसपी.नेट पहचान के लिए कस्टम स्टोरेज प्रदाता का अवलोकन और कस्टम MySQL एएसपी . NET पहचान संग्रहण प्रदाता को लागू करने का उदाहरण देखें। आपको डेविड बोइक द्वारा बनाए गए RavenDB.AspNet.Identity Nuget पैकेज का कोड भी देखना चाहिए। स्रोत https://github.com/ILMServices/RavenDB.AspNet.Identity/tree/master/RavenDB.AspNet.Identity पर github पर है

मैं एक .NET एमवीसी 5 आवेदन में काम कर रहा हूं। मैं इकाई फ्रेमवर्क का उपयोग नहीं करना चाहता। मैं एक RavenDB डेटाबेस को प्रमाणीकृत करना चाहता हूँ। मुझे लगता है कि मैं खाता नियंत्रक के साथ आने वाले UserManager को प्रतिस्थापित करना चाहता हूं। मुझे लगता है कि मैं अपने डेटाबेस के साथ काम करने के लिए सभी उपयोगकर्ता प्रबंधक कार्यों को फिर से लिख सकता हूं, सिवाय इसके कि मैं ClaimsIdentity वस्तु वस्तु को समझ नहीं पा रहा हूं।

SignInAsync विधि में, UserManager.CreateIdentityAsync(...) एक कॉल है। मुझे पता है कि यह ClaimsIdentity वस्तु देता है। मुझे नहीं पता कि दावे इडेंटिटी ऑब्जेक्ट को अपने आप कैसे बनाएं।

मैं देखता हूं कि इसमें 4 गुण Actor , BootstrapContext , Claims और Label । मुझे नहीं पता कि इन गुणों का क्या उपयोग किया जाता है, और मुझे नहीं पता कि उन्हें ठीक से कैसे उत्पन्न किया जाए। मुझे लगता है कि उन्हें उत्पन्न करना सही है क्योंकि यह प्रमाणीकरण कुकी बनाई जाती है।

मैंने here दावों की वस्तु वस्तु के स्पष्टीकरण को देखा, लेकिन इससे मुझे वास्तव में समझने में मदद नहीं मिली।

अगर मैं CreateIdentityAsync() के लिए कोड देख सकता हूं, तो शायद यह मदद करेगा।

अगर मैं इस सब गलत के बारे में जा रहा हूं, तो कृपया मुझे बताएं। अन्यथा, अगर कोई मुझे दावे इडेंटिटी ऑब्जेक्ट उत्पन्न करने की ओर इशारा कर सकता है, तो यह सहायक होगा।

ClaimsIdentity identity = new ClaimsIdentity
{
    Actor = ????,
    BootstrapContext = ?????,
    Claims = ?????,
    Label = ?????
}

मैंने नई एएसपी.नेट एमवीसी 5 पहचान के लिए एक रावेनडीबी कार्यान्वयन बनाया और इसे NuGet पैकेज के रूप में जारी किया। यह आपके लिए काम कर सकता है।

http://www.nuget.org/packages/RavenDB.AspNet.Identity/

यह कुछ हद तक prerelease है लेकिन मैं इसे एक असली परियोजना में उपयोग कर रहा हूँ।

यहां गिटहब प्रोजेक्ट और इसके बारे में रावेनडीबी चर्चा समूह पर एक छोटा सा धागा है।


शायद निम्न लिंक मदद कर सकते हैं:

var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "Brock"));
claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie);

var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(id);




katana