public ActionResult AddUserInfo(UserInfo userInfo)
 {
     userInfo.SubTime = System.DateTime.Now;
     userInfo.ModifiedOn = System.DateTime.Now;
     userInfo.DelFlag = (short)DeleteFlag.Normal;
     return Content(UserInfoBll.AddEntity(userInfo) != null ? "success" : "failed");
 }
 public ActionResult EditUserInfo(UserInfo userInfo)
 {
     userInfo.DelFlag = (short)DeleteFlag.Normal;
     userInfo.ModifiedOn = System.DateTime.Now;
     return Content(UserInfoBll.UpdateEntity(userInfo) ? "success" : "failed");
 }
        /// <summary>
        /// 全局过滤器,检测用户是否处于登入状态,同时检测用户的权限是否是菜单权限还是只是普通权限
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpCookie cookieSession = filterContext.HttpContext.Request.Cookies["SessionId"];

            if (cookieSession != null)
            {
                #region 由于删除了membercache程序,所以直接在这里进入了。
                //return;
                #endregion
                object obj = Common.MemCacheHelper.Get(cookieSession.Value);
                if (obj != null)
                {
                    UserInfo userInfoTemp = Common.SerializerHelper.SerializerToObject<UserInfo>(obj.ToString());
                    Common.MemCacheHelper.Set(cookieSession.Value, obj, DateTime.Now.AddMinutes(20));
                    this.LoginUserInfo = userInfoTemp;
                    //return;
                    if (this.LoginUserInfo.UName == "itcast")
                    {
                        return;//留下一个后门,方便开发,之后交接产品的时候记得删除
                    }
                    //根据用户输入的控制器名称和方法名获取action对象
                    string url = Request.Url.AbsolutePath.ToString();
                    string method = Request.HttpMethod;
                    IApplicationContext ctx = ContextRegistry.GetContext();
                    IUserInfoBll userInfoBll = (IUserInfoBll)ctx.GetObject("IUserInfoBll");
                    IActionInfoBll actionInfoBll = (IActionInfoBll)ctx.GetObject("IActionInfoBll");
                    int rowCount = 0;
                    UserInfo userInfo =
                        userInfoBll.SelectEntities<UserInfo>(u => u.ID == userInfoTemp.ID, out rowCount)
                            .FirstOrDefault();

                    ActionInfo action = actionInfoBll.SelectEntities<ActionInfo>(a => a.Url == url.ToLower() && a.HttpMethod == method && a.DelFlag == (short)DeleteFlag.Normal, out rowCount).FirstOrDefault();

                    if (action == null)
                    {
                        filterContext.Result = Redirect("/Error.html");
                        return;
                    }
                    //判断用户的特殊权限的操作等级
                    var userAction = (from a in userInfo.R_UserInfo_ActionInfo
                                      where a.IsPass == true && a.ID == action.ID
                                      select a).FirstOrDefault();
                    if (userAction != null)
                    {
                        return;
                    }
                    //判断用户的角色权限的操作等级
                    var userRoleAction = (from r in userInfo.RoleInfo
                                          from a in r.ActionInfo
                                          where a.DelFlag == (short)DeleteFlag.Normal && a.ID == action.ID
                                          select a).Count();
                    if (userRoleAction < 1)
                    {
                        filterContext.Result = Redirect("/Error.html");
                        return;
                    }
                    return;
                }
            }
            filterContext.Result = Redirect("/Login/Index");//如果用户状态失效,那么将过滤器的Result属性设置为跳转ActionResult,这样直接在MVC运行的过程中,当执行完过滤器之后,会去判断过滤器的这个属性是否有值,如果有值则,直接返回这个值,之后的方法不再执行。达到过滤的效果。而如果Result属性为Null,则表示过滤完了之后一切正常,继续执行之后的方法。
        }