2010-05-18 14 views
8

में भूमिका के आधार पर ऑथ कुकी टाइमआउट लंबाई सेट करना मैं सामान्य उपयोगकर्ताओं की तुलना में व्यवस्थापक को लॉग इन करने की अनुमति देना चाहता हूं। मुझे कुकी टाइमआउट को प्रोग्रामेटिक रूप से या भूमिका-आधारित तरीके से सेट करने के लिए एक हुक नहीं दिखता है। क्या फॉर्म प्रमाणीकरण का उपयोग कर एएसपी में यह संभव है?ASP.NET

उत्तर

7

हाँ, आप ऐसा कर सकते हैं। फ्रेमवर्क को स्वचालित रूप से उत्पन्न करने के बजाय आपको मैन्युअल रूप से प्रमाणीकरण टिकट जेनरेट करना होगा।

उपयोगकर्ता भूमिका के आधार पर, आप टिकट के लिए आवंटन की समाप्ति।

This tutorial show how to generate the ticket manually.

+0

धन्यवाद! बिल्कुल सही लिंक – Wyatt

6

स्निपेट:

 switch Role: 
    Case A: VARIABLE X = Y; BREAK; 
    CASE B: VARIABLE X = Y2; BREAK; 
    .. 

    End switch 

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
     1, // Ticket version 
     Username.Value, // Username associated with ticket 
     DateTime.Now, // Date/time issued 
     DateTime.Now.AddMinutes(VARIABLE X), // Date/time to expire 
     true, // "true" for a persistent user cookie 
     reader.GetString(0), // User-data, in this case the roles 
     FormsAuthentication.FormsCookiePath);// Path cookie valid for 

    // Encrypt the cookie using the machine key for secure transport 
    string hash = FormsAuthentication.Encrypt(ticket); 
    HttpCookie cookie = new HttpCookie(
     FormsAuthentication.FormsCookieName, // Name of auth cookie 
     hash); // Hashed ticket 

    // Set the cookie's expiration time to the tickets expiration time 
    if (ticket.IsPersistent) cookie.Expires = ticket.Expiration; 

    Response.Cookies.Add(cookie); 
+0

बहुत स्पष्ट और सहायक! धन्यवाद! यदि मैं केवल फॉर्म नाम प्रमाणीकरण टिकट अधिभार प्राप्त करता हूं, केवल स्ट्रिंग उपयोगकर्ता नाम, बूल IsPersitent और int टाइमआउट प्राप्त करता हूं, तो क्या मैं एन्क्रिप्टिंग और कुकी को असाइन कर दूंगा? –

+0

मैं यहां से समझता हूं: टिप्पणी में https://msdn.microsoft.com/en-us/library/w04e17xz(v=vs.100).aspx, कि FormsCookiePath स्वचालित रूप से सेट हो गया है और इसलिए एन्क्रिप्टिंग इत्यादि होगा वही किया –