void Application_AuthenticateRequest() { var myCookie = FormsAuthentication.FormsCookieName; var myAuthCookie = Context.Request.Cookies[myCookie]; if (null == myAuthCookie) { return; } FormsAuthenticationTicket myAuthTicket; try { myAuthTicket = FormsAuthentication.Decrypt(myAuthCookie.Value); } catch (Exception ex) { UtilTools.LogE(ex.StackTrace, ex.Source, ex.GetBaseException().Message); return; } if (null == myAuthTicket) { return; } var userDataSplit = myAuthTicket.UserData.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (!userDataSplit.Any() || userDataSplit.Length != 3) { return; } if (!userDataSplit[0].Trim().IsNumeric() || !userDataSplit[1].Trim().IsNumeric()) { return; } var roles = userDataSplit[2].Split(new[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries); if (!roles.Any()) { return; } var id = new FormsIdentity(myAuthTicket); IPrincipal principal = new PlugPortalPrincipal(id, roles); Context.User = principal; }
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { filterContext.Controller.ViewBag.UserAuthInfo = null; base.OnActionExecuting(filterContext); return; } var frmId = (FormsIdentity)filterContext.HttpContext.User.Identity; var usData = frmId.Ticket.UserData; if (string.IsNullOrEmpty(usData)) { filterContext.Controller.ViewBag.UserAuthInfo = null; base.OnActionExecuting(filterContext); return; } var userDataSplit = usData.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (!userDataSplit.Any() || userDataSplit.Length != 3) { filterContext.Controller.ViewBag.UserAuthInfo = null; base.OnActionExecuting(filterContext); return; } if (!userDataSplit[0].IsNumeric() || !userDataSplit[1].IsNumeric()) { filterContext.Controller.ViewBag.UserAuthInfo = null; base.OnActionExecuting(filterContext); return; } var roles = userDataSplit[2].Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var identity = new FormsIdentity(frmId.Ticket); var principal = new PlugPortalPrincipal(identity, roles); var userData = new UserData { UserId = int.Parse(userDataSplit[0].Trim()), Username = frmId.Name, Email = frmId.Name, Roles = roles, UserType = (UserType)int.Parse(userDataSplit[1].Trim()), }; if (!MvcApplication.SetUserData(userData)) { filterContext.Controller.ViewBag.UserAuthInfo = null; base.OnActionExecuting(filterContext); return; } filterContext.Controller.ViewBag.UserAuthInfo = userData; filterContext.HttpContext.User = principal; base.OnActionExecuting(filterContext); }