예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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));
        }
예제 #5
0
        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;
            }
        }