2008-09-03 10 views
8

में लॉगिन नियंत्रण के बिना कस्टम सदस्यता प्रदाता का उपयोग करना हमारे पास ASP.NET में एक कस्टम MembershipProvider है।एएसपी.NET

  1. अपने उपयोगकर्ता नाम/पासवर्ड दर्ज करके के माध्यम से उपयोगकर्ता लॉगिन login.aspx पेज: अब वहाँ 2 संभव परिदृश्य उपयोगकर्ता मान्य किया जा सकता है। मैंने लॉगिन नियंत्रण का उपयोग किया है और इसे MyMembershipProvider से लिंक किया है। यह पूरी तरह से ठीक काम कर रहा है।

  2. क्वेरी स्ट्रिंग में कुछ यूआरएल के माध्यम से एक प्रमाणीकरण टोकन एक अलग वेबसाइट बनाने के लिए पारित किया जाता है। इसके लिए मेरे पास MembershipProvider.Validate(string authenticationToken) में एक अधिभार है, जो वास्तव में उपयोगकर्ता को मान्य कर रहा है। इस मामले में हम लॉगिन नियंत्रण का उपयोग नहीं कर सकते हैं। अब लॉगिन नियंत्रण का उपयोग किए बिना उपयोगकर्ता को सत्यापित करने के लिए मैं उसी MembershipProvider का उपयोग कैसे कर सकता हूं? मैं Validate मैन्युअल कॉल करने की कोशिश, लेकिन इस में उपयोगकर्ता पर हस्ताक्षर नहीं है।

यहाँ कोड का टुकड़ा मैं

if (!string.IsNullOrEmpty(Request.QueryString["authenticationToken"])) { 
    string ticket = Request.QueryString["authenticationToken"]; 
    MyMembershipProvider provider = Membership.Provider as MyMembershipProvider; 
    if (provider != null) { 
     if (provider.ValidateUser(ticket)) 
      // Login Success 
     else 
      // Login Fail 
    } 
} 

उत्तर

13

के बाद सत्यापन सफल हुआ उपयोग कर रहा हूँ है, तो आप उपयोगकर्ता को प्रवेश करने की जरूरत है , FormsAuthentication.Authenticate फोन करके: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx

संपादित करें: http://msdn.microsoft.com/en-us/library/twk5762b.aspx

: यह FormsAuthentication.SetAuthCookie है

इसके अलावा, उपयोगकर्ता वापस रीडायरेक्ट करने के लिए जहां वह जाना, फोन करना चाहता था: FormsAuthentication.RedirectFromLoginPage: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.redirectfromloginpage.aspx

link text

4

आप सेट कर सकते हैं अपने खुद के FormsAuthenticationTicket अगर सत्यापन सफल रहा है।

ऐसा कुछ;

if (provider != null) { 
    if (provider.ValidateUser(ticket)) { 
     // Login Success 
     FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
      1, //version 
      someUserName, //name 
      DateTime.Now, //issue date 
      DateTime.Now.AddMinutes(lengthOfSession), //expiration 
      false, // persistence of login 
      FormsAuthentication.FormsCookiePath 
     ); 

     //encrypt the ticket 
     string hash = FormsAuthentication.Encrypt(authTicket); 
     HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 

     Response.Cookies.Add(cookie); 
     Response.Redirect(url where you want the user to land); 
    } else { 
     // Login Fail 
    } 
} 
+0

मैं यह जानने की कोशिश कर रहा हूं कि प्रमाणीकरण वास्तव में कैसे काम करता है। धन्यवाद। इसने मेरी बहुत मदद की है – Krishh

1

आप एक कुकी सीधे रूप में प्रमाणन जानकारी संग्रहीत करने के मामले में सही कर रहे हैं। लेकिन एक मजबूत हैश फ़ंक्शन का उपयोग करना (उदा। एमडी 5 + SHA1) बहुत अच्छा और सुरक्षित है। वैसे, यदि आप सत्र का उपयोग करते हैं (जो कि केवल एक हैश कुकी है) तो आप इसे ऑथ जानकारी संलग्न कर सकते हैं।