2011-10-29 14 views
10

मुझे वर्तमान में लॉग इन उपयोगकर्ता के एक फॉर्म प्रमाणीकरण AuthCookie में उपयोगकर्ता डेटा संपादित करने की आवश्यकता है। मुझे नहीं पता कि वर्तमान उपयोगकर्ता ने लगातार कुकी ("मुझे याद रखें" चुना है या नहीं)।जांचें कि वर्तमान में लॉग इन उपयोगकर्ता के पास लगातार authcookie है

//user is already logged in... 

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, ispersistant); //how to I determine 'ispersistant'? 

FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 

FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, NEWuserdata); 

authCookie.Value = FormsAuthentication.Encrypt(newTicket); 

HttpContext.Current.Response.SetCookie(authCookie); 

किसी को भी कोई विचार है? धन्यवाद

उत्तर

7

FormsAuthentication.GetAuthCookie विधि केवल एक नई कुकी बनाता है। यह आपको पहले बनाई गई कुकी नहीं मिलती है।

अपना लॉगिन पृष्ठ पर आप शायद कुछ इस तरह है:

FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked) 

और पता करने के लिए जब उपयोगकर्ता प्रमाणीकृत है आप

this.Context.User.Identity.IsAuthenticated 

कर सकते हैं मैं वास्तव में निश्चित रूप से पता नहीं है, तो आप इस तथ्य को कम कर सकते हैं कि उपयोगकर्ता के पास लगातार ऑथ कुकी है। एक चीज एक समाप्ति तिथि के लिए कुकी की जांच कर रहा है।

इस question में प्रमाणीकरण कुकी पढ़ने के लिए एक उदाहरण है।

2

मैंने लॉगिन पर ऑथडाकी की उपयोगकर्ता डेटा संपत्ति में "ispersistant" संग्रहित किया।

6

यह मौजूदा फॉर्म ऑथ कुकी को पुनर्प्राप्त करना चाहिए, टिकट की जांच करें, और बताएं कि यह लगातार है या नहीं।

 var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName]; 
     var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value); 
     bool IsPersistent = ExistingTicket.IsPersistent; 
संबंधित मुद्दे