title: Asp.Net Mvc Can Not Log Out
body: <p>Here is My Code To Log In</p>
  
  <pre><code> var expire = DateTime.Now.AddDays(7);
          // Create a new ticket used for authentication
          var ticket = new FormsAuthenticationTicket(
          1, // Ticket version
          username, // Username to be associated with this ticket
          DateTime.Now, // Date/time issued
          expire, // Date/time to expire
          true, // "true" for a persistent user cookie (could be a checkbox on form)
          roles, // User-data (the roles from this user record in our database)
          FormsAuthentication.FormsCookiePath); // Path cookie is valid for
  
          // Hash the cookie for transport over the wire
          var hash = FormsAuthentication.Encrypt(ticket);
          var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash) { Expires = expire };
  
          // Add the cookie to the list for outbound response
          Response.Cookies.Add(cookie);
  </code></pre>
  
  <hr>
  
  <p>Here Is My Code To Check The Roles. It is a custom IHTTP Module</p>
  
  <pre><code> if (HttpContext.Current.User == null) return;
          if (!HttpContext.Current.User.Identity.IsAuthenticated) return;
          if (!(HttpContext.Current.User.Identity is FormsIdentity)) return;
  
          // Get Forms Identity From Current User
          var id = (FormsIdentity)HttpContext.Current.User.Identity;
          // Get Forms Ticket From Identity object
          var ticket = id.Ticket;
          // Retrieve stored user-data (our roles from db)
          var userData = ticket.UserData;
          var roles = userData.Split(',');
          // Create a new Generic Principal Instance and assign to Current User
          Thread.CurrentPrincipal = HttpContext.Current.User = new GenericPrincipal(id, roles);
  </code></pre>
  
  <hr>
  
  <p>Here is my Code To Log Out</p>
  
  <pre><code>FormsAuthentication.SignOut();
          Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
          Session.Clear(); 
          Response.Cache.SetCacheability(HttpCacheability.NoCache);
          Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
          Response.Cache.SetNoStore();
          Response.AppendHeader("Pragma", "no-cache");
          return View("SignIn");
  </code></pre>
  
  <hr>
  
  <p>This is crazy. I have two bald spots now.</p>