12

यह एक एमवीसी 2 वेबसाइट है, मुझे फॉर्म फॉर्म प्रमाणीकरण टिकट में समस्या है। 30 मिनट के बाद उपयोगकर्ता टाइमआउट पुनः लॉगिन नहीं कर सकता है। परीक्षण के दौरान, DateTime.Now.AddMinutes (30) मूल्य 5000 स्थापित किया गया था और सब कुछ ठीक था, लेकिन अब यह 30 में बदल गया है और कहा कि जब तब समस्याफॉर्म प्रमाणीकरण टिकट.एक्सपीशन वी वेब.कॉन्फिग वैल्यू टाइमआउट

शुरू कर दिया कुकी निर्माण से है

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
      1, 
      user.UserID, 
      DateTime.Now, 
      DateTime.Now.AddMinutes(30), 
      false, 
      "user,user1", 
      FormsAuthentication.FormsCookiePath); 

Web.config फ़ाइल

<authentication mode="Forms"> 
    <forms loginUrl="~/Account.mvc/LogOn" timeout="2880" name=".ASPXFORMSAUTH" /> 
</authentication> 

टिकट निर्माण में समाप्ति मूल्य होने की जरूरत है> = web.config मूल्य?

उत्तर

23

क्योंकि आप मैन्युअल रूप से प्रमाणीकरण कुकी बना रहे हैं, तो आपके web.config में टाइमआउट मान पूरी तरह अनदेखा कर दिया जाता है। मैं उन दोनों को 30 मिनट के लिए सेट हो जाएगा

var ticket = new FormsAuthenticationTicket(
    1, 
    user.UserID, 
    DateTime.Now, 
    DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes), 
    false, 
    "user,user1", 
    FormsAuthentication.FormsCookiePath 
); 
var encryptedTicket = FormsAuthentication.Encrypt(ticket); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) 
{ 
    HttpOnly = true, 
    Secure = FormsAuthentication.RequireSSL, 
    Path = FormsAuthentication.FormsCookiePath, 
    Domain = FormsAuthentication.CookieDomain 
}; 
Response.AppendCookie(cookie); 
+0

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

+1

छोटे सुधार - जो 'सुरक्षित = फॉर्म प्रमाणीकरण। RequireSSL' होना चाहिए,' HttpOnly' सेटिंग सिर्फ जावास्क्रिप्ट से छिपी हुई कुकी बनाता है (उचित ब्राउज़र में, आईई 6 इसका समर्थन नहीं करता है)। – Keith

+0

@ केथ, अच्छी पकड़। यह बात बताने के लिए धन्यवाद। –