2012-05-24 15 views
7

मैं कुकी समाप्त होने के लिए फॉर्म की प्रमाणीकरण के लिए कुकी समाप्त करना चाहता हूं। (मैं इसे PHP सत्र की तरह काम करना चाहता हूं)Asp.Net MVC3 - प्रपत्र प्रमाणीकरण, ब्राउज़र बंद होने पर कुकी का समय समाप्त कैसे करें?

यहां मेरा ऑथ कोड है जो मॉडल (नियंत्रक नहीं) में स्थित है।

मॉडल/Auth.cs

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, 
    model.UserId, 
    DateTime.Now, 
    DateTime.Now.AddDays(1), 
    true, 
    model.UserId +" "+reader["lastname"], 
    FormsAuthentication.FormsCookiePath); 

string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 

if (ticket.IsPersistent) 
{ 
    cookie.Expires = ticket.Expiration; 
} 

HttpContext.Current.Response.Cookies.Add(cookie); 

Web.config

<authentication mode="Forms"> 
    <forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

और एक और सवाल है, वहाँ 2 कुकी समय-समाप्ति सेट बार कर रहे हैं,

टिकट में

,

DateTime.Now.AddDays(1), 

और Web.config में प्रमाणीकरण में दाखिल

<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms> 

कैसे अलग वे कर रहे हैं, और जो एक वास्तविक कुकी समाप्त करने के लिए प्रभावी होगा?

किसी को पता है, कृपया मुझे सलाह देते हैं।

धन्यवाद!

उत्तर

9

आप कुकी समाप्त हो नहीं कर सकते ब्राउज़र बंद करने पर। हालांकि, आप कुकी को लगातार बना सकते हैं, जिसका अर्थ यह है कि यह कुकी को नहीं बचाएगा और इस प्रकार जब आप एक नया ब्राउज़र खोलेंगे तो इसमें एक नई कुकी होगी (हालांकि, जागरूक रहें, जिस तरह से अधिकांश ब्राउज़र कैश गैर-लगातार होते हैं टैब के साथ कुकीज़, पूरे ब्राउज़र को इसे साफ़ करने के लिए बंद करना होगा)।

अपने दूसरे प्रश्न का सवाल है, web.config प्रवेश करता है, तो आप एक समय समाप्ति निर्दिष्ट नहीं करते हैं प्रयोग किया जाता है।

+0

यह काम करता है! धन्यवाद! –

+0

क्रोम के साथ काम नहीं करता है। वर authTicket = नए FormsAuthenticationTicket (1, user.EmailAddress, DateTime.Now, DateTime.Now.AddMinutes (FormsAuthentication.Timeout.TotalMinutes), झूठे, UserData, "/"); – JenonD

+0

@ जेनॉनडी - "काम नहीं करता" अस्पष्ट है .. कई चीजों पर चर्चा की गई, विशेष रूप से "काम नहीं करता" क्या है? –

0

jQuery अनलोड घटना ब्राउज़र बंद करने का पता लगाने के लिए इस्तेमाल किया जा सकता है। उपयोगकर्ता एक लिंक पर क्लिक किया पेज छोड़ने के लिए, या पता बार में एक नया URL में टाइप:

लेकिन इस घटना भी जब निकाल दिया जाता है। आगे और पीछे बटन ईवेंट को ट्रिगर करेंगे। एक पेज रीलोड भी पहले एक अनलोड ईवेंट बना देगा।

Bind an event handler to the "unload" JavaScript event.

जवाब आपके दूसरे प्रश्न, समय समाप्ति है कि आप ओवरराइड के साथ अपने कोड web.config प्रविष्टि में निर्धारित किया है।

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