private static void OnAuthenticateRequest(object sender, EventArgs e) { var application = (HttpApplication)sender; HttpContext context = application.Context; if (context.User != null && context.User.Identity.IsAuthenticated) { return; } string cookieName = FormsAuthentication.FormsCookieName; HttpCookie cookie = application.Request.Cookies[cookieName.ToUpper()]; if (cookie == null) { return; } try { FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); var identity = new CustomIdentity(AccountEntry.Deserialize(ticket.UserData), ticket.Name); var principal = new GenericPrincipal(identity, identity.GetRoles()); context.User = principal; Thread.CurrentPrincipal = principal; } catch { } }
public void SignIn(User user, bool createPersistentCookie) { var accountEntry = new AccountEntry(user); var authTicket = new FormsAuthenticationTicket(1, user.Login, DateTime.Now, DateTime.Now.AddMinutes(45), createPersistentCookie, accountEntry.Serialize()); string encryptedTicket = FormsAuthentication.Encrypt(authTicket); var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Expires = DateTime.Now.Add(FormsAuthentication.Timeout), }; HttpContext.Current.Response.Cookies.Add(authCookie); var identity = new CustomIdentity(accountEntry, authTicket.Name); HttpContext.Current.User = new GenericPrincipal(identity, identity.GetRoles()); }
public CustomIdentity(AccountEntry accountEntry, string name) { Name = name; this.accountEntry = accountEntry; }