2012-01-13 13 views
15

मैं फॉर्म प्रमाणीकरण के साथ एएसपी.नेट एमवीसी 3 का उपयोग कर रहा हूं (संशोधित वेनिला खाता कोड के आधार पर जो आप फ़ाइल-> नया के साथ प्राप्त करते हैं)।मेरा एएसपी.नेट एमवीसी लगातार ऑथ कुकी क्यों काम नहीं कर रहा है?

जब आप प्रवेश करेंगे, मैं

FormsAuthentication.SetAuthCookie(userName, true); 

के साथ एक प्रमाणन कुकी सेट कर रहा हूँ तो यह एक लगातार कुकी सेट करना चाहिए। लेकिन अगर मैं ब्राउज़र को बंद करता हूं और फिर से खोलता हूं, जब मैं साइट पर ब्राउज़ करता हूं तो मुझे फिर से लॉग इन करने के लिए मजबूर किया जाता है! मैं क्रोम देव उपकरण का उपयोग कर देख सकता हूं कि कुकी (.ASPXAUTH) बनाई जा रही है और जब मैं ब्राउज़र बंद करता हूं तो हटाया नहीं जा रहा है, तो क्या हो रहा है?

मेरे web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogIn" timeout="10000"/> 
</authentication> 

मैं इस स्थानीय स्तर पर परीक्षण कर रहा हूँ, आईआईएस के तहत कि यदि कोई फर्क नहीं पड़ता।

+1

आपको यह उत्तर की जांच कर सकते हैं: http://stackoverflow.com/questions/682788/making-user-login-persistant-with-asp-net-membership – alexl

+2

ठीक है, इस लिंक पर मेरे लिए यह सॉर्ट करने के लिए लग रहा था - चिपका SetAuthCookie के साथ और कुकी कॉन्फ़िगरेशन (web.confg में) को स्पष्ट रूप से सेट करने के लिए मेरी कॉन्फ़िगरेशन को ट्वीव करना, और अब सभी काम कर रहे हैं। अजीब! –

+0

@ मैट रॉबर्ट्स - मुझे नहीं पता कि क्यों कुकी नाम सेट करना मेरे लिए भी तय किया गया है। आपको लगता है कि यह सिर्फ कुकी विशिष्ट डोमेन होने के साथ काम करेगा। क्या यह एमवीसी या .NET में एक बग है? – Greg

उत्तर

3

@alexl से टिप्पणी से हल:

आपको यह उत्तर की जांच कर सकते हैं: Making user login persistant with ASP .Net Membership

ठीक है, इस लिंक पर मेरे लिए यह सॉर्ट करने के लिए लग रहा था - SetAuthCookie साथ चिपके हुए हैं और मेरे config में सुधार करने को स्पष्ट रूप से कुकी नाम स्थापित करने के लिए (web.confg में), और अब सब काम कर रहे हैं। अजीब! -

8

मैं प्रमाणीकरण टिकट का उपयोग करके खुद को एक कुकी बना दूंगा। SetAuthCookie हुड के नीचे एक ऑथ टिकट बनाता है। क्या आपने अपना खुद का ऑथ टिकट बनाने की कोशिश की है? यह आपको पर अतिरिक्त डेटा स्टोर करने देगा।

// create encryption cookie   
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, 
     userName, 
     DateTime.Now, 
     DateTime.Now.AddDays(90), 
     createPersistentCookie, 
     string.Empty); 

// add cookie to response stream   
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);  
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
if (authTicket.IsPersistent) 
{  
     authCookie.Expires = authTicket.Expiration; 
} 
System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); 

आशा इस मदद करता है:

यहाँ एक उदाहरण है।

+0

धन्यवाद। तो मुझे SetAuthCookie का बिल्कुल उपयोग नहीं करना चाहिए? एमएसडीएन दस्तावेज मुझे उस ऑथ कुकी बनाने के लिए उपयोग करने के लिए कहता है जो लगातार हो सकता है। साथ ही, एक नए एमवीसी ऐप के लिए वेनिला कोड SetAuthCookie का उपयोग करता है - क्या यह गलत है? –

+0

SetAuthCookie() वैश्विक रूप से वही कर रहा है। यह सिर्फ अजीब है क्योंकि ऐसा लगता है कि यह हर समय काम नहीं करता है। मैं myslef को प्रमाणीकरण टिकट बनाना पसंद करता हूं और इसे प्रतिक्रिया स्ट्रीम में जोड़ता हूं। –

+0

अपने प्रश्न के लिए टिप्पणी के रूप में @alexl लिंक भी पोस्ट करें। –

संबंधित मुद्दे