public ActionResult Register(CustomPrincipalModel principalsModel) { var permissions = new List <Permission>(); foreach (var permission in principalsModel.Permissions) { permissions.Add(new Permission { Name = permission }); } var user = new User { Name = principalsModel.Name, Permissions = permissions }; this.userManager.IgnorePermissions = true; this.userManager.Insert(user); principalsModel.Id = user.Id; var serializer = new JavaScriptSerializer(); var userData = serializer.Serialize(principalsModel); FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket( 1, user.Name, DateTime.Now, DateTime.Now.AddMinutes(15), false, userData); string encTicket = FormsAuthentication.Encrypt(authTicket); HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); this.Response.Cookies.Add(faCookie); CustomPrincipal newUser = new CustomPrincipal(authTicket.Name) { Id = principalsModel.Id, Name = principalsModel.Name, Permissions = principalsModel.Permissions }; System.Web.HttpContext.Current.User = newUser; return(this.RedirectToAction("Index", "Employees")); }
private void SetCurrentUser(HttpCookie authCookie) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); JavaScriptSerializer serializer = new JavaScriptSerializer(); CustomPrincipalModel serializeModel = serializer.Deserialize <CustomPrincipalModel>(authTicket.UserData); CustomPrincipal newUser = new CustomPrincipal(authTicket.Name); newUser.Id = serializeModel.Id; newUser.Name = serializeModel.Name; newUser.Permissions = serializeModel.Permissions; HttpContext.Current.User = newUser; }
// add custom user data to authentication cookie void SetCustomAuthenticationCookie(string email, bool rememberMe) { var user = ArtContext.Users.ByEmail(email); var principalModel = new CustomPrincipalModel(); principalModel.UserId = (int)user.Id; principalModel.FirstName = user.FirstName; principalModel.LastName = user.LastName; var serializer = new JavaScriptSerializer(); string userData = serializer.Serialize(principalModel); var authCookie = FormsAuthentication.GetAuthCookie(email, rememberMe); var ticket = FormsAuthentication.Decrypt(authCookie.Value); var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userData); authCookie.Value = FormsAuthentication.Encrypt(newTicket); Response.Cookies.Add(authCookie); }