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 = "webrunes";//FormsAuthentication.FormsCookieName; HttpCookie cookie = application.Request.Cookies[cookieName]; if (cookie == null) { return; } try { FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); var identity = new CustomIdentity(AccountCollectionEntry.Deserialize(ticket.UserData), ticket.Name); var principal = new GenericPrincipal(identity, identity.GetRoles()); context.User = principal; Thread.CurrentPrincipal = principal; } catch { } }
public static string Serialize(AccountCollectionEntry accountColle) { using (var stream = new MemoryStream()) { var formatter = new XmlSerializer(typeof(AccountCollectionEntry)); formatter.Serialize(stream, accountColle); return Encoding.UTF8.GetString(stream.ToArray()); } }
private void UpdateContextResponse(FormsAuthenticationTicket authTicket, AccountCollectionEntry accountEntry) { var authCookie = new HttpCookie("webrunes", FormsAuthentication.Encrypt(authTicket)) { Expires = DateTime.UtcNow.AddDays(30) }; _context.Response.Cookies.Add(authCookie); var identity = new CustomIdentity(accountEntry, authTicket.Name); var principal = new GenericPrincipal(identity, identity.GetRoles()); _context.User = principal; }
public void SignIn(UserAccount user, bool createPersistentCookie) { var accountEntry = new AccountCollectionEntry(); accountEntry.AddAccount(user, createPersistentCookie); var authTicket = new FormsAuthenticationTicket(1, user.Id, DateTime.Now, DateTime.Now.AddYears(5), createPersistentCookie, AccountCollectionEntry.Serialize(accountEntry)); UpdateContextResponse(authTicket, accountEntry); }
public void DeleteUserFromContext(string id) { HttpCookie currentUserCookie = _context.Request.Cookies["webrunes"]; FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(currentUserCookie.Value); var collectionentry = AccountCollectionEntry.Deserialize(ticket.UserData); collectionentry.DeleteBy(id); collectionentry.CurrentAccountId = null; var authTicket = new FormsAuthenticationTicket(1, "", DateTime.Now, DateTime.Now.AddDays(-1), false, AccountCollectionEntry.Serialize(collectionentry)); UpdateContextResponse(authTicket, collectionentry); }
public bool SignOut(IUserService userService) { if (!_context.User.Identity.IsAuthenticated) { return(false); } HttpCookie currentUserCookie = _context.Request.Cookies["webrunes"]; FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(currentUserCookie.Value); var collectionentry = AccountCollectionEntry.Deserialize(ticket.UserData); collectionentry.CurrentAccountId = null; var authTicket = new FormsAuthenticationTicket(1, "", DateTime.Now, DateTime.Now.AddDays(-1), false, AccountCollectionEntry.Serialize(collectionentry)); UpdateContextResponse(authTicket, collectionentry); return(true); }
public CustomIdentity(AccountCollectionEntry accountEntry, string name) { Name = name; this.AccountCollectionEntry = accountEntry; }