Limiting Persistent Authentication Cookie Lifetime

void Application_EndRequest(Object sender, EventArgs e)
{
    
// Change the expiration date on outgoing persistent forms
    
// authentication tickets to 24 hours hence.
    HttpCookie cookie1 = GetCookieFromResponse(
        FormsAuthentication.FormsCookieName);

    
if (cookie1 != null && !String.IsNullOrEmpty (cookie1.Value))
    
{
        FormsAuthenticationTicket ticket1 
= FormsAuthentication.Decrypt(
            Response.Cookies[FormsAuthentication.FormsCookieName].Value);
        
if (ticket1.IsPersistent)
        
{
            FormsAuthenticationTicket ticket2 
=
                
new FormsAuthenticationTicket (
                ticket1.Version, ticket1.Name, ticket1.IssueDate,
                DateTime.Now.AddHours (
24), // New expiration date
                ticket1.IsPersistent, ticket1.UserData,
                ticket1.CookiePath
            );

            Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
            HttpCookie cookie2 
= new HttpCookie(
                FormsAuthentication.FormsCookieName,
                FormsAuthentication.Encrypt(ticket2));
            cookie2.Expires 
= ticket2.Expiration;
            Response.Cookies.Add(cookie2);
        }

    }

}


HttpCookie GetCookieFromResponse (
string name)
{
    HttpCookieCollection cookies 
=
        HttpContext.Current.Response.Cookies;
    
int count = cookies.Count;
    
for (int i=0; i<count; i++{
        
if (String.Compare (cookies[i].Name, name, true== 0)
            
return cookies[i];
    }

    
return null;
}
    

原文地址:https://www.cnblogs.com/kokoliu/p/660114.html