public override void OnActionExecuting(ActionExecutingContext filterContext) { var cookie = filterContext.HttpContext.Request.Cookies["USERSESSIONS"]; if (cookie != null) { try { var ticket = FormsAuthentication.Decrypt(cookie.Value); if (ticket != null && !string.IsNullOrEmpty(ticket.UserData)) { var userId = Convert.ToInt32(ticket.UserData.Split('$')[0]); UserVM user = new UserService().GetUserById(userId); if (user == null) { filterContext.Result = new RedirectResult("~/account/login"); return; } this.UserData = new WFFormsAuthentication() { Name = user.Name, RoleType = user.RoleType, Flag = user.Flag, UserId = user.ID }; } } catch (Exception ex) { } return; } else if (!filterContext.HttpContext.Request.IsAuthenticated) { filterContext.Result = new RedirectResult("~/account/login"); return; } //1.登录状态获取用户信息(自定义保存的用户) var cookieTwo = filterContext.HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName]; //2.使用 FormsAuthentication 解密用户凭据 var ticketTwo = FormsAuthentication.Decrypt(cookieTwo.Value); //3. 直接解析到用户模型里去 this.UserData = new JavaScriptSerializer().Deserialize <WFFormsAuthentication>(ticketTwo.UserData); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.HttpContext.Request.IsAuthenticated) { filterContext.Result = new RedirectResult("~/account/login"); } //1.登录状态获取用户信息(自定义保存的用户) var cookie = filterContext.HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName]; //2.使用 FormsAuthentication 解密用户凭据 var ticket = FormsAuthentication.Decrypt(cookie.Value); //3. 直接解析到用户模型里去 this.UserData = new JavaScriptSerializer().Deserialize <WFFormsAuthentication>(ticket.UserData); }
/// <summary> /// setAuthCookie /// </summary> /// <param name="name"></param> /// <param name="user"></param> /// <param name="isPersistent"></param> private void setAuthCookie(string name, UserVM user, bool isPersistent) { WFFormsAuthentication userData = new WFFormsAuthentication() { UserId = user.ID, Name = string.IsNullOrEmpty(user.Name) ? user.Name : user.Alias, TrueName = string.IsNullOrEmpty(user.Name) ? user.Name : user.Alias }; if (user.RoleType.HasValue) { userData.RoleType = user.RoleType; } if (user.Flag.HasValue) { userData.Flag = user.Flag; } //把数据保存到cookie中 WFFormsAuthentication.SetAuthCookie(name, userData, isPersistent); }
/// <summary> /// 退出 /// </summary> /// <param name="redirectUrl"></param> /// <returns></returns> //[Authorize] public ActionResult Logout(string redirectUrl) { #region 日志 var log = new LogVM() { Operator = this.UserData.Name, OperatorID = this.UserData.UserId, RoleType = this.UserData.RoleType, OperateTime = DateTime.Now, OperateType = (int)EnumOperateType.退出 }; log.OperateDescribe = ((EnumOperateType)log.OperateType).ToString(); Logger.AddLog(log); #endregion WFFormsAuthentication.SignOut(); return(Redirect(string.IsNullOrEmpty(redirectUrl) ? Url.Action("index", "home") : redirectUrl)); }
public ActionResult Index() { try { var cookie = Request.Cookies["USERSESSIONS"]; if (cookie == null) { return(RedirectToAction("Login", "Account")); } var ticket = FormsAuthentication.Decrypt(cookie.Value); if (ticket == null || string.IsNullOrEmpty(ticket.UserData)) { return(RedirectToAction("Login", "Account")); } var userId = Convert.ToInt32(ticket.UserData.Split('$')[0]); UserVM user = new UserService().GetUserById(userId); if (user == null) { return(RedirectToAction("Login", "Account")); } #region 如果已有用户登录,则先将之前登录的用户退出 //1.登录状态获取用户信息(自定义保存的用户) var cookieTwo = Request.Cookies[FormsAuthentication.FormsCookieName]; if (cookieTwo != null) { //2.使用 FormsAuthentication 解密用户凭据 var ticketTwo = FormsAuthentication.Decrypt(cookieTwo.Value); //3. 直接解析到用户模型里去 WFFormsAuthentication userData = JsonConvert.DeserializeObject <WFFormsAuthentication>(ticketTwo.UserData); var logOut = new LogVM() { Operator = userData.Name, OperatorID = userData.UserId, RoleTypes = userData.RoleTypes, OperateTime = DateTime.Now, OperateType = (int)EnumOperateType.退出 }; logOut.OperateDescribe = ((EnumOperateType)logOut.OperateType).ToString(); Logger.AddLog(logOut); WFFormsAuthentication.SignOut(); } #endregion UserVM sessionLogin = null; if (!(Session["login"] != null && (sessionLogin = Session["login"] as UserVM) != null && sessionLogin.ID == user.ID)) { #region 登录日志 var log = new LogVM() { Operator = user.Name, OperatorID = user.ID, RoleTypes = user.RoleTypes, OperateTime = DateTime.Now, OperateType = (int)EnumOperateType.登录 }; log.OperateDescribe = ((EnumOperateType)log.OperateType).ToString(); Logger.AddLog(log); #endregion Session["login"] = user; } var noticeId = Request["noticeId"]; var noticeReceiverId = Request["noticeReceiverId"]; if (noticeId == null) { return(RedirectToAction("Index", "Home")); } else { return(RedirectToAction("ViewNotice", "Home", new { noticeId = noticeId, noticeReceiverId = noticeReceiverId })); } } catch (Exception ex) { LogHelper.WriteLog(ex.Message); throw ex; } }