यहां आप जाते हैं। जब आप फॉर्म प्रमाणीकरण में बनाए गए उच्च स्तरीय तरीकों का उपयोग करते हैं तो एएसपी.नेट आपके लिए इसका ख्याल रखता है, लेकिन निम्न स्तर पर इसे प्रमाणीकरण कुकी बनाने की आवश्यकता होती है।
if (Membership.ValidateUser(username, password))
{
// sometimes used to persist user roles
string userData = string.Join("|",GetCustomUserRoles());
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // ticket version
username, // authenticated username
DateTime.Now, // issueDate
DateTime.Now.AddMinutes(30), // expiryDate
isPersistent, // true to persist across browser sessions
userData, // can be used to store additional user data
FormsAuthentication.FormsCookiePath); // the path for the cookie
// Encrypt the ticket using the machine key
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
// Add the cookie to the request to save it
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
// Your redirect logic
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));
}
मुझे यकीन नहीं है कि आप यहां कुछ कस्टम क्यों करना चाहते हैं। यदि आप उपयोगकर्ता डेटा को संग्रहीत करने के तरीके को कार्यान्वित करना चाहते हैं और उपयोगकर्ता कैसे प्रमाणीकृत करते हैं तो कस्टम MembershipProvider
बनाने का सर्वोत्तम अभ्यास है। प्रमाणीकरण कुकी के साथ अपना स्वयं का समाधान और गड़बड़ करना आपके सॉफ़्टवेयर में सुरक्षा छेद पेश करने की उच्च संभावना है।
मुझे आपके भाग को समझ में नहीं आ रहा है 2. आपको केवल फॉर्म्स प्रमाणीकरण.गेट्रैडरेक्ट यूआरएल को कॉल करने की आवश्यकता है यदि आप उन उपयोगकर्ताओं को वापस लौटना चाहते हैं, जिन्हें वे लॉगिन करने के लिए बाउंस करते समय एक्सेस करने का प्रयास कर रहे थे। यदि आप जो कुछ भी यहां चाहते हैं, तो यदि आप चाहें तो कॉन्फ़िगरेशन में संग्रहीत यूआरएल पर रीडायरेक्ट करें।
फॉर्म प्रमाणीकरण कुकी पढ़ने के लिए, आमतौर पर आप AuthenticateRequest
ईवेंट को HttpModule या Global.asax में हुक करेंगे और उपयोगकर्ता को IPrinciple
संदर्भ सेट अप करेंगे।
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if(authCookie != null)
{
//Extract the forms authentication cookie
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
// If caching roles in userData field then extract
string[] roles = authTicket.UserData.Split(new char[]{'|'});
// Create the IIdentity instance
IIdentity id = new FormsIdentity(authTicket);
// Create the IPrinciple instance
IPrincipal principal = new GenericPrincipal(id, roles);
// Set the context user
Context.User = principal;
}
}
उर जवाब मुझे मदद करता है ... यू कर सकते हैं प्रमाणीकरण के बाद प्रमाणीकरण कुकी की सामग्री पढ़ने क्या कोड मैं लिखने की ज़रूरत है। फॉर्म प्रमाणीकरण। SetAuthCookie (उपयोगकर्ता नाम, createPersistentCookie); SetAuthCookie प्रमाणीकरण कुकी बनाते हैं और मुझे सर्वर की ओर से उस कुकी की सामग्री लिखने की आवश्यकता है? क्या आप कृपया मदद कर सकते हैं। thnx। :) – Thomas
क्या हम jquery का उपयोग कर क्लाइंट साइड से फॉर्म प्रमाणीकरण कुकी बना सकते हैं? – Thomas
मैंने यह दिखाने के लिए अपडेट किया है कि आप कुकी को कैसे पढ़ सकते हैं। नहीं, आप इसे क्लाइंट-साइड से सेट नहीं कर सकते क्योंकि यह एक सुरक्षा जोखिम होगा और आप एन्क्रिप्शन निष्पादित करने में सक्षम नहीं होंगे जिसके लिए सर्वर-साइड कुंजी की आवश्यकता होती है। ऑथ कुकी हमेशा एचटीपी होना चाहिए। एकमात्र तरीका एक AJAX अनुरोध करना होगा और कुकी को सर्वर-साइड सेट करने दें, इस मामले में आपको यह सुनिश्चित करना होगा कि आप SSL पर किसी भी प्रमाण पत्र को पार कर रहे हैं। – TheCodeKing