Ejemplo n.º 1
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            //if (Session["userInfo"] == null)
            //{
            //    filterContext.HttpContext.Response.Redirect("/Login/Index");
            //}
            bool isScuess = false;

            if (Request.Cookies["sessionID"] != null)
            {
                string sessionID = Request.Cookies["sessionID"].Value;
                object obj       = MemcacheHelper.Get(sessionID);
                if (obj != null)
                {
                    UserInfo userInfo = SerializeHelper.DeserializeToObject <UserInfo>(obj.ToString());
                    LoginUser = userInfo;
                    //模拟滑动过期时间
                    MemcacheHelper.Set(sessionID, obj, DateTime.Now.AddMinutes(20));
                    isScuess = true;
                }
            }
            if (!isScuess)
            {
                filterContext.Result = Redirect("/Login/Index");
            }
        }
Ejemplo n.º 2
0
        public List <RespondGetAllEmployeeViewModel> GetAllEmployee(RequestWebViewData <RequestGetAllEnityDataViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <List <RespondGetAllEmployeeViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetAllEmployee"),

                #region =====================
                CallBackFunc = () =>
                {
                    var parameter = new QueryEmployeeListParameter
                    {
                        SerialNumber = request.data.Keywords
                    };
                    var dataList = this.mEmployeeDataAccess.GetAllEmployee(parameter);
                    var respond = dataList.Select(item => new RespondGetAllEmployeeViewModel
                    {
                        EmpId = item.empid,
                        SerialNumber = item.serialnumber,
                        Name = item.name,
                        Comment = item.comment,
                        Spelling = item.pinyin
                    }).ToList();
                    return respond;
                },
                #endregion

                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.CommonAjax,
                ExpiresAt = DateTime.Now.AddMinutes(30),
                ParamsKeys = new object[]
                {
                    request.data.Keywords,
                    this.mSigninUser.UserID
                }
            }));
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     获取配置文件内容比反序列化为T(永不过期)
        /// </summary>
        /// <param name="configFilePath">配置文件路径</param>
        /// <returns>配置对象</returns>
        public static T GetConfig <T>(string configFilePath) where T : class
        {
            var cacheKey = string.Concat(configFilePath, typeof(T).FullName, HttpContext.Current == null ? AppDomain.CurrentDomain.BaseDirectory.ToMD5String() : HttpContext.Current.Request.Url.Host);

            return(MemcacheHelper.Get(() =>
            {
                T config;
                lock (GetLockObject(configFilePath))
                {
                    if (!Path.IsPathRooted(configFilePath))
                    {
                        configFilePath = GetMapPath(configFilePath);
                    }
                    try
                    {
                        var xmlSerializer = new XmlSerializer(typeof(T));
                        using (var streamReader = new StreamReader(configFilePath))
                        {
                            config = xmlSerializer.Deserialize(streamReader) as T;
                        }
                    }
                    catch //(InvalidOperationException exception)
                    {
                        return null;
                    }
                }
                return config;
            }, cacheKey, false));
        }
Ejemplo n.º 4
0
        public RespondWebViewData <List <RespondSystemParameterConfigViewModel> > GetSystemParameterConfigViewModels()
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <List <RespondSystemParameterConfigViewModel> > >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetSystemParameterConfigViewModels"),

                #region ========================
                CallBackFunc = () =>
                {
                    var dataModels = this.mSystemParameterConfigDataAccess.GetSystemParameterConfigDataModels();
                    var viewModels = new RespondWebViewData <List <RespondSystemParameterConfigViewModel> >
                    {
                        rows = dataModels.Select(data => new RespondSystemParameterConfigViewModel
                        {
                            ParameterConfigName = data.ParameterConfigName,
                            ParameterConfigValue = data.ParameterConfigValue
                        }).ToList()
                    };
                    return viewModels;
                },
                #endregion

                ManageCacheKeyForKey = THISSERVICE_PRE_CACHE_KEY_MANAGE,
                ParamsKeys = new object[]
                {
                    this.mSigninUser.UserID,
                    this.mSigninUser.CompanySerialNum
                }
            }));
        }
Ejemplo n.º 5
0
        public RespondWebViewData <RespondSystemParameterConfigViewModel> GetSystemParameterConfigViewModel(RequestWebViewData <RequestSystemParameterConfigViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <RespondSystemParameterConfigViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetSystemParameterConfigViewModel"),

                #region ===================================================
                CallBackFunc = () =>
                {
                    var kvConfig = this.BuildDictionay();
                    var value = kvConfig[request.data.ParameterConfigName];
                    return new RespondWebViewData <RespondSystemParameterConfigViewModel>
                    {
                        rows = value
                    };
                },
                #endregion

                ManageCacheKeyForKey = THISSERVICE_PRE_CACHE_KEY_MANAGE,
                ParamsKeys = new object[]
                {
                    request.data.ParameterConfigName,
                    this.mSigninUser.CompanySerialNum
                }
            }));
        }
Ejemplo n.º 6
0
        public ActionResult Index(string UName, string UPwd, string vcode)
        {
            string validateCode = Session["validateCode"]?.ToString();

            if (string.IsNullOrEmpty(validateCode))
            {
                return(Content("no:验证码错误"));
            }
            Session["validateCode"] = null;
            if (!validateCode.Equals(vcode, StringComparison.InvariantCultureIgnoreCase))
            {
                return(Content("no:验证码错误"));
            }
            var userInfo = userInfoService.LoadEntities(u => u.UName == UName && u.UPwd == UPwd).FirstOrDefault();

            if (userInfo == null)
            {
                return(Content("no:用户名或密码错误"));
            }
            //Session["userInfo"] = userInfo;
            string sessionID = Guid.NewGuid().ToString();

            //将用户信息存在memcache中,过期时间20分钟
            MemcacheHelper.Set(sessionID, SerializeHelper.SerializeToString(userInfo), DateTime.Now.AddMinutes(20));
            Response.Cookies["sessionID"].Value = sessionID;
            return(Content("ok:验证通过"));
        }
 public RespondWebViewData <RespondOnlineSigninUserViewModel> GetOnlineSigninUserByUserID_g(RequestOnlineSigninUserViewModel request)
 {
     return(MemcacheHelper.Get(() =>
     {
         var parameter = new OnlineSigninUserParameter
         {
             SGuid = request.SGuid,
             UserIP = request.AddressIP
         };
         var dataModel = this.mSiginUserDataAccess.GetOnlineSigninUserByUserID_g(parameter);
         if (dataModel == null)
         {
             return new RespondWebViewData <RespondOnlineSigninUserViewModel>(WebViewErrorCode.LoginRequired);
         }
         return new RespondWebViewData <RespondOnlineSigninUserViewModel>
         {
             rows = new RespondOnlineSigninUserViewModel
             {
                 UserID = dataModel.userid,
                 LoginName = dataModel.username,
                 SGuid = dataModel.sguid,
                 ExpTime = dataModel.exptime,
                 UserIP = dataModel.userip
             }
         };
     }, string.Format(preCacheKey, "GetOnlineSigninUserByUserID_g"),
                               DateTime.Now.AddMinutes(WebConfigHelper.MemCachedExpTime()),
                               false,
                               request.SGuid,
                               request.AddressIP));
 }
Ejemplo n.º 8
0
        public RespondWebViewData <RespondQueryEmployeeViewModel> GetEmployeeByEmpId(RequestWebViewData <RequestGetEmployeeByIdViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <RespondQueryEmployeeViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetEmployeeByEmpId"),

                #region ====================
                CallBackFunc = () =>
                {
                    var respond = new RespondWebViewData <RespondQueryEmployeeViewModel>
                    {
                        rows = new RespondQueryEmployeeViewModel()
                    };
                    var employee = this.mEmployeeDataAccess.GetemployeeDataModelById(request.data.EmpId);
                    if (employee == null)
                    {
                        return respond;
                    }
                    if (employee.deleted == (short)CommonDeleted.Deleted || employee.status != (short)CommonStatus.Used)
                    {
                        return respond;
                    }
                    var totalScale = this.mSystemParameterConfigViewService.SystemParameterConfig()[SystemParameterConfigConst.TotalScale].ParameterConfigValue.ToInt16();

                    respond = new RespondWebViewData <RespondQueryEmployeeViewModel>
                    {
                        rows = new RespondQueryEmployeeViewModel
                        {
                            Address = employee.address,
                            ChildNumber = employee.childnumber,
                            ClassId = employee.classid,
                            Comment = employee.comment,
                            Deleted = employee.deleted,
                            DepId = employee.depid,
                            DepName = employee.depname,
                            EmpId = employee.empid,
                            LowestDiscount = employee.lowestdiscount,
                            Mobile = employee.mobile,
                            Name = employee.name,
                            ParentId = employee.parentid,
                            PreInAdvanceTotal = employee.preinadvancetotal.ToNumberString(totalScale),
                            PrePayFeeTotal = employee.prepayfeetotal.ToNumberString(totalScale),
                            SerialNumber = employee.serialnumber,
                            Status = employee.status,
                            Spelling = employee.pinyin,
                            Sort = employee.sort
                        }
                    };
                    return respond;
                },
                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicEmployee,
                ParamsKeys = new object[]
                {
                    request.data.EmpId
                }
            }));
        }
        public List <RespondHeadButtonsViewModel> QueryHeadButtonsViewModelsByMenuID(RequestHeadButtonsViewModel request)
        {
            //TODO 配置每个单据的按钮权限后需清除缓存
            return(MemcacheHelper.Get(new RequestMemcacheParameter <List <RespondHeadButtonsViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "QueryHeadButtonsViewModelsByMenuID"),

                #region ====================================
                CallBackFunc = () =>
                {
                    var parameter = new HeadButtonsParameter
                    {
                        MenuID = request.MenuID,
                        UserId = this.mSigninUser.UserID
                    };
                    var dataModels = this.mHeadButtonsDataAccess.QueryHeadButtonsViewModelsByMenuID(parameter);
                    var viewModels = dataModels.Select(model => new RespondHeadButtonsViewModel
                    {
                        ButtonDisabled = model.ButtonDisabled,
                        ButtonIconCls = model.ButtonIconCls,
                        ButtonName = model.ButtonName,
                        ButtonText = model.ButtonText
                    }).ToList();
                    return viewModels;
                },
                #endregion
                ExpiresAt = DateTime.Now.AddMinutes(WebConfigHelper.MemCachedExpTime()),
                ManageCacheKeyForKey = THISSERVICE_PRE_CACHE_KEY_MANAGE,
                ParamsKeys = new object[]
                {
                    request.MenuID,
                    this.mSigninUser.UserID
                }
            }));
        }
Ejemplo n.º 10
0
        public JsonResult ResetPassword(string active, ResetPwd resetPwd)
        {
            var data = new { code = 1, msg = "修改失败" };

            if (!string.IsNullOrEmpty(active) && ModelState.IsValid)
            {
                if (TempData[Keys.ValidCode] == null || !TempData[Keys.ValidCode].ToString().Equals(resetPwd.Code, StringComparison.CurrentCultureIgnoreCase))
                {
                    data = new { code = 1, msg = "验证码错误" };
                    //Session[Keys.ValidCode] = null;
                    return(Json(data));
                }
                var obj = MemcacheHelper.Get(active);
                if (obj != null)
                {
                    var user = SerializerHelper.DeserializeToObject <User>(obj.ToString());
                    if (user != null)
                    {
                        user.Login_Password = resetPwd.Password.Md5_32();
                        userService.EditEntity(user);
                        if (userService.SaveChanges())
                        {
                            data = new { code = 0, msg = "修改成功,请牢记新密码。" };
                            MemcacheHelper.Set(active, null, DateTime.Now.AddHours(-1));
                        }
                    }
                }
            }
            return(Json(data));
        }
Ejemplo n.º 11
0
        public JsonResult ForgetPasswordEmail(string email)
        {
            var data = new { code = 1, msg = "邮件发送失败,请重试。" };
            var user = userService.LoadEntity(u => u.Email.Equals(email, StringComparison.CurrentCultureIgnoreCase));

            if (user != null)
            {
                var id          = Guid.NewGuid().ToString("N");
                var link        = GlobalConfig.UrlPrefix + $"/account/resetpassword?active={id}";
                var templetpath = Server.MapPath("~/Templates/RetrievePassword.txt");
                NameValueCollection collection = new NameValueCollection();
                var timespan = DateTime.Now.AddMinutes(10);
                collection.Add("ename", user.Nickname);
                collection.Add("link", link);
                collection.Add("expired", timespan.ToString("yyyy-MM-dd HH:mm:ss"));
                var body = TemplateHelper.BuildByFile(templetpath, collection);
                if (EmailHelper.Send(user.Email, "找回您的账户密码", body))
                {
                    MemcacheHelper.Set(id, SerializerHelper.SerializeToString(user), timespan);
                    data = new { code = 0, msg = "重置密码链接已经发送到您的邮箱中了,请注意查收。" };
                }
            }

            return(Json(data));
        }
Ejemplo n.º 12
0
        public ActionResult UserLogin()
        {
            string uName = Request["LoginCode"];
            string uPwd  = Request["LoginPwd"];
            string code  = Request["vCode"];

            if (code == "###")
            {
            }
            else if (Session["ValidateCode"] == null || !code.Equals(Session["ValidateCode"]))
            {
                return(Content("error:验证码错误"));
            }
            var userInfo = UserInfoService.LoadEntites(o => o.UName == uName).FirstOrDefault();

            if (userInfo == null)
            {
                return(Content("error:账户不存在"));
            }
            if (userInfo.Pwd != uPwd)
            {
                return(Content("error:密码错误"));
            }
            string loginID = Guid.NewGuid().ToString();

            // 将用户的信息存到Session中
            Session["UserInfo"] = userInfo;
            // 将用户的信息存到Cookie中
            Response.Cookies["LoginID"].Value = loginID;
            // 将用户的信息存到Memcache中
            MemcacheHelper.Set(loginID, SerializeHelper.SerializeToString(userInfo), DateTime.Now.AddMinutes(20));
            return(Content("ok:登陆成功"));
        }
Ejemplo n.º 13
0
        //身份验证
        protected override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
            bool isLogin = false;

            //判断Cookie中是否有对应数据
            if (Request.Cookies["LData"] != null)
            {
                //有
                string key = Request.Cookies["LData"].Value;
                object obj = MemcacheHelper.Get(key);
                if (obj != null)
                {
                    //反序列化
                    UserLogin = SerializeHelper.DeserializeToObject <UserLoginViewModel>(obj.ToString()) as UserLoginViewModel;
                }
                if (UserLogin != null)
                {
                    //登录信息正确
                    isLogin = true;
                }
            }

            if (!isLogin)
            {
                //未登录跳转到登录界面
                filterContext.Result = Redirect(Url.Action("Index", "Login"));
            }
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Gets the data helper.
 /// <para>If MySQL DB dbType is "Mysql" dbConnString  like "Server=127.0.0.1;Port=3306;Database=world;Uid=root;Pwd=123456;" </para>
 /// <para>If MsSql DB dbType is "SqlServer" dbConnString  like "Server=127.0.0.1;Port=3306;Database=world;Uid=root;Pwd=123456;" </para>
 /// <para>If Sqlite DB dbType is "Sqlite" dbConnString  like "Data Source=${app}\\testdb.db3" </para>
 /// </summary>
 public static IDataHelper GetDataHelper(string dbTypeName, string dbConnString)
 {
     return(MemcacheHelper <DataHelper> .ReadAndWrite("[" + dbTypeName + "][" + dbConnString + "]", () =>
     {
         var driver = GetDriver(dbTypeName, dbConnString);
         return new DataHelper(driver);
     }));
 }
Ejemplo n.º 15
0
        public RespondWebViewData <RespondQueryClientViewModel> GetClientByClientId(RequestWebViewData <RequestGetClientByIdViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <RespondQueryClientViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetClientByClientId"),

                #region ====================
                CallBackFunc = () =>
                {
                    var respond = new RespondWebViewData <RespondQueryClientViewModel>
                    {
                        rows = new RespondQueryClientViewModel()
                    };
                    var client = this.mClientDataAccess.GetclientDataModelById(request.data.ClientId);
                    if (client == null)
                    {
                        return respond;
                    }
                    if (client.deleted == (short)CommonDeleted.Deleted || client.status != (short)CommonStatus.Used)
                    {
                        return respond;
                    }

                    respond = new RespondWebViewData <RespondQueryClientViewModel>
                    {
                        rows = new RespondQueryClientViewModel
                        {
                            Address = client.address,
                            Alias = client.alias,
                            ChildNumber = client.childnumber,
                            ClassId = client.classid,
                            ClientId = client.clientid,
                            Comment = client.comment,
                            Credits = client.credits.ToNumberString(5),
                            LinkAddress = client.linkaddress,
                            LinkMan = client.linkman,
                            LinkTel = client.linktel,
                            Name = client.name,
                            ParentId = client.parentid,
                            Spelling = client.pinyin,
                            PriceMode = client.pricemode,
                            SerialNumber = client.serialnumber,
                            Sort = client.sort,
                            ZipCode = client.zipcode
                        }
                    };
                    return respond;
                },
                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicClient,
                ParamsKeys = new object[]
                {
                    request.data.ClientId
                }
            }));
        }
Ejemplo n.º 16
0
        public RespondWebViewData <RespondEditStorageViewModel> EditStorage(RequestWebViewData <RequestEditStorageViewModel> request)
        {
            var rData = request.data;

            if (this.mStorageDataAccess.CheckStorageIsExist(new QueryStorageListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber, StorageId = rData.StorageId
            }))
            {
                return(new RespondWebViewData <RespondEditStorageViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的仓库已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RespondEditStorageViewModel>(WebViewErrorCode.Success);

            try
            {
                this.mDbConnection.ExecuteTransaction(tran =>
                {
                    var storage = this.mStorageDataAccess.GetstorageDataModelById(rData.StorageId);
                    if (storage == null)
                    {
                        respond = new RespondWebViewData <RespondEditStorageViewModel>(WebViewErrorCode.NotExistsDataInfo);
                        return;
                    }
                    if (storage.deleted == (short)CommonDeleted.Deleted)
                    {
                        respond = new RespondWebViewData <RespondEditStorageViewModel>(WebViewErrorCode.NotExistsDataInfo);
                        return;
                    }

                    var data = new storageDataModel
                    {
                        alias        = rData.Alias,
                        comment      = rData.Comment,
                        name         = rData.Name,
                        PinYin       = rData.Spelling,
                        serialnumber = rData.SerialNumber,
                        sort         = rData.Sort,
                        stoid        = rData.StorageId,
                        childcount   = storage.childcount,
                        classid      = storage.classid,
                        childnumber  = storage.childnumber,
                        deleted      = storage.deleted,
                        parentid     = storage.parentid,
                        status       = storage.status
                    };
                    this.mStorageDataAccess.Update(data, tran);
                    MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicStorage);

                    //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                    //this.SaveMongoDbData("编辑往来客户资料", request, respond, this.GetType());
                });
            }
            catch (Exception exception)
            {
                respond = new RespondWebViewData <RespondEditStorageViewModel>(new ErrorCodeItem(WebViewErrorCode.Exception.ErrorCode, exception.Message));
            }
            return(respond);
        }
Ejemplo n.º 17
0
        public RespondWebViewData <RequestEditClientViewModel> EditClient(RequestWebViewData <RequestEditClientViewModel> request)
        {
            var rData = request.data;

            if (this.mClientDataAccess.CheckClientIsExist(new QueryClientListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber, ClientId = rData.ClientId
            }))
            {
                return(new RespondWebViewData <RequestEditClientViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的往来单位已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RequestEditClientViewModel>(WebViewErrorCode.Success);

            this.mDbConnection.ExecuteTransaction(tran =>
            {
                var client = this.mClientDataAccess.GetclientDataModelById(rData.ClientId);
                if (client == null)
                {
                    respond = new RespondWebViewData <RequestEditClientViewModel>(WebViewErrorCode.NotExistsDataInfo);
                    return;
                }
                if (client.deleted == (short)CommonDeleted.Deleted)
                {
                    respond = new RespondWebViewData <RequestEditClientViewModel>(WebViewErrorCode.NotExistsDataInfo);
                    return;
                }

                var data = new clientDataModel
                {
                    address      = rData.Address,
                    alias        = rData.Alias,
                    clientid     = rData.ClientId,
                    comment      = rData.Comment,
                    credits      = rData.Credits,
                    linkaddress  = rData.LinkAddress,
                    linktel      = rData.LinkTel,
                    linkman      = rData.LinkMan,
                    name         = rData.Name,
                    pinyin       = rData.Spelling,
                    pricemode    = rData.PriceMode,
                    serialnumber = rData.SerialNumber,
                    sort         = rData.Sort,
                    zipcode      = rData.ZipCode,
                    status       = client.status,
                    deleted      = client.deleted,
                    parentid     = client.parentid,
                    childnumber  = client.childnumber,
                    childcount   = client.childcount,
                    classid      = client.classid
                };
                this.mClientDataAccess.Update(data, tran);
                MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicClient);

                //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                //this.SaveMongoDbData("编辑往来客户资料", request, respond, this.GetType());
            });
            return(respond);
        }
Ejemplo n.º 18
0
        public ActionResult UserLogin()
        {
            if (Response.Cookies["sessionId"].Value != null)
            {
                return(Content("ok:登录成功"));
            }
            else
            {
                string validateCode = Session["validateCode"] != null ? Session["validateCode"].ToString() : string.Empty;

                if (string.IsNullOrEmpty(validateCode))
                {
                    return(Content("no:验证码错误!!"));
                }
                Session["validateCode"] = null;
                string txtCode = Request["vCode"];
                if (!validateCode.Equals(txtCode, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(Content("no:验证码错误!!"));
                }
                string userName = Request["LoginCode"];
                string userPwd  = Request["LoginPwd"];
                bool   check    = Request["Check"] == "checded" ? true : false;
                var    userInfo = UserInfoService.LoadEntities(u => u.UName == userName && u.UPwd == userPwd).FirstOrDefault();             //根据用户名找用户
                if (userInfo != null)
                {
                    //Session["userInfo"] = userInfo;
                    //这里用Memcache代替Session是因为一旦用户访问量大了一台机器无法满足 就要建立多台机器处理用户访问 如果用seeion保存用户数据 只能保存在一台机器中 如果用户下次请求被其他机器接收 会检测不到用户数据 用户有得重新登录 而Membercache中数据可以在多台机器中共享 (这就是分布式缓存的一种应用)
                    //产生一个GUID值作为Memache的键.
                    string sessionId = Guid.NewGuid().ToString();
                    //这里报错了,可能是生成UserInfo的T4模板没有修改加上[JsonIgnore] 序列号不了后面几个复杂类型数据
                    MemcacheHelper.Set(sessionId, SerializeHelper.SerializeToString(userInfo), DateTime.Now.AddMinutes(20));                    //将登录用户信息存储到Memcache中。

                    #region 自动登录
                    //Response.Cookies["sessionId"].Value = sessionId;//将Memcache的key以Cookie的形式返回给浏览器。
                    if (check)
                    {
                        HttpCookie cookie = new HttpCookie("sessionId");
                        cookie.Value   = sessionId;
                        cookie.Expires = DateTime.Now.AddDays(1);
                        Response.Cookies.Add(cookie);
                    }
                    else
                    {
                        HttpCookie cookie = new HttpCookie("sessionId");
                        cookie.Value = sessionId;
                        Response.Cookies.Add(cookie);
                    }
                    #endregion
                    return(Content("ok:登录成功"));
                }
                else
                {
                    return(Content("no:登录失败"));
                }
            }
        }
Ejemplo n.º 19
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpCookie httpCookie = Request.Cookies.Get("userInfoSID");
            bool       idIsPass   = false;
            UserInfo   userInfo   = null;

            //账号验证    begin
            if (httpCookie != null)
            {
                string userInfoSID = httpCookie.Value;
                object obj         = MemcacheHelper.Get(userInfoSID);
                if (obj != null)
                {
                    userInfo = SerializeHelper.DeserializeToObject <UserInfo>(obj.ToString());
                    ////查看该用户有没有角色、并获取角色。
                    //roleInfo = UserInfoService.LoadEntities(u => u.ID == userInfo.ID && u.UPwd == userInfo.UPwd).FirstOrDefault().RoleInfo.FirstOrDefault();
                    if (userInfo != null)
                    {
                        idIsPass = true;
                    }
                }
            }
            // //账号验证 end

            if (idIsPass)  //账号验证通过。
            {
                string url            = Request.Url.AbsolutePath.ToLower();
                string method         = Request.HttpMethod;
                string controllerName = RouteData.Values["controller"].ToString().ToLower();

                var query = UserInfoService.LoadEntities(u => u.ID == userInfo.ID && u.UPwd == userInfo.UPwd).FirstOrDefault().RoleInfo;

                int count = (from u in query
                             from a in u.ActionInfo
                             where /*a.HttpMethod == method&&*/ a.ControllerName == controllerName //a.Url == url
                             select a).Count();
                if (count > 0)
                {
                    return;
                }
                else
                {
                    filterContext.Result = Redirect(@"/static/Error/nopermission.html");
                    return;
                }
            }
            else           //账号验证未通过。
            {
                filterContext.Result = Redirect("/Login/Index");
                return;
            }



            // base.OnActionExecuting(filterContext);
            //filterContext.Result = Redirect("/Login/Index");
        }
Ejemplo n.º 20
0
        public ActionResult GetVCode()
        {
            ValidateCode vliateCode = new ValidateCode();
            string       code       = vliateCode.CreateValidateCode(4);//产生验证码
            string       sId        = MemcacheHelper.Set(code, DateTime.Now.AddMinutes(20));

            Response.Cookies["vCodeSID"].Value = sId;
            byte[] buffer = vliateCode.CreateValidateGraphic(code);
            return(File(buffer, "image/jpeg"));
        }
Ejemplo n.º 21
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            string strController = filterContext.RouteData.Values["controller"].ToString();
            string strAction     = filterContext.RouteData.Values["action"].ToString();

            if (strController.Equals("Login") || strController.Equals("Error"))
            {
                return;     // 如果访问的是 Login 就直接放回
            }
            // 校验用户登录
            if (filterContext.HttpContext.Request.Cookies["LoginID"] == null)
            {
                filterContext.HttpContext.Response.Redirect("/Login/Index");
                return;
            }
            string loginId = filterContext.HttpContext.Request.Cookies["LoginID"].Value;

            if (string.IsNullOrEmpty(loginId))
            {
                // 留一个后门,请求的 Contorller 是Articles 或 Search ,则忽略登录验证
                if (strController.Equals("Articles") || strController.Equals("Search"))
                {
                    return;
                }
                filterContext.HttpContext.Response.Redirect("/Login/Index");
                return;
            }
            object loginUser = MemcacheHelper.Get(loginId); //SerializeHelper

            if (loginUser == null)
            {
                filterContext.HttpContext.Response.Redirect("/Login/Index");
                return;
            }
            UserInfo userInfo = SerializeHelper.DeserializeToObject <UserInfo>(loginUser.ToString());

            if (userInfo == null)
            {
                filterContext.HttpContext.Response.Redirect("/Login/Index");
                return;
            }
            MemcacheHelper.Set(loginId, SerializeHelper.SerializeToString(userInfo), DateTime.Now.AddMinutes(20));  // 重新设置过期时间 即 平滑时间
            // 校验用户权限
            IApplicationContext ctx               = ContextRegistry.GetContext();
            IUserInfoService    userInfoService   = ctx.GetObject <UserInfoService>("UserInfoService");
            IActionInfoService  actionInfoService = ctx.GetObject <ActionInfoService>("ActionInfoService");

            userInfo = userInfoService.LoadEntites(o => o.ID.Equals(userInfo.ID)).FirstOrDefault();
            BaseController.LoginUser = userInfo;
            if (!actionInfoService.ValidateUserAction(userInfo, filterContext.HttpContext.Request))
            {
                filterContext.HttpContext.Response.Redirect("/Error/Index/?msg=" + "无访问权限");
            }
        }
Ejemplo n.º 22
0
        public string GetStringValue(string key)
        {
            var value = MemcacheHelper.Get(key)?.ToString();

            if (value == null)
            {
                value = settingRepository.LoadEntity(s => s.Key.Equals(key, StringComparison.CurrentCultureIgnoreCase))?.Value;
                MemcacheHelper.Set(key, value, DateTime.Now.AddHours(1));
            }
            return(value);
        }
Ejemplo n.º 23
0
        public RespondWebViewData <RespondQueryStorageViewModel> GetStorageByStorageId(RequestWebViewData <RequestGetStorageByIdViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <RespondQueryStorageViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetStorageByStorageId"),

                #region ====================
                CallBackFunc = () =>
                {
                    var respond = new RespondWebViewData <RespondQueryStorageViewModel>
                    {
                        rows = new RespondQueryStorageViewModel()
                    };
                    var storage = this.mStorageDataAccess.GetstorageDataModelById(request.data.StorageId);
                    if (storage == null)
                    {
                        return respond;
                    }
                    if (storage.deleted == (short)CommonDeleted.Deleted || storage.status != (short)CommonStatus.Used)
                    {
                        return respond;
                    }

                    respond = new RespondWebViewData <RespondQueryStorageViewModel>
                    {
                        rows = new RespondQueryStorageViewModel
                        {
                            Alias = storage.alias,
                            ParentId = storage.parentid,
                            Spelling = storage.PinYin,
                            ChildNumber = storage.childnumber,
                            ClassId = storage.classid,
                            Comment = storage.comment,
                            Deleted = storage.deleted,
                            Name = storage.name,
                            SerialNumber = storage.serialnumber,
                            Sort = storage.sort,
                            StorageId = storage.stoid,
                            Status = storage.status
                        }
                    };
                    return respond;
                },

                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicStorage,
                ParamsKeys = new object[]
                {
                    request.data.StorageId
                }
            }));
        }
Ejemplo n.º 24
0
        public RespondCompanyInfoViewModel GetCompanyInfoViewModel(RequestCompanyInfoViewModel request)
        {
            var respond = MemcacheHelper.Get(() =>
            {
                var filePath = BuildConnectionFilePath.BuildFilePath(request.CompanyID);
                var _respond = new RespondCompanyInfoViewModel();
                if (ExistsFileHelper.ExistsFile(filePath))
                {
                    var connectionConfig = ConfigHelper.GetConfig <DbConnectionConfig>(filePath);
                    _respond             = new RespondCompanyInfoViewModel
                    {
                        CompanyID      = request.CompanyID,
                        ConnectTimeout = connectionConfig.ConnectTimeout,
                        Database       = connectionConfig.Database,
                        Password       = connectionConfig.Password,
                        Server         = connectionConfig.Server,
                        UserID         = connectionConfig.UserID
                    };
                    return(_respond);
                }

                var parameter = new CompanyInfoParameter
                {
                    CompanyID = request.CompanyID
                };
                var dataModel = this.mCompanyInfoDataAccess.GetCompanyInfoDataModelByID(parameter);
                if (dataModel == null)
                {
                    return(_respond);
                }
                _respond = new RespondCompanyInfoViewModel
                {
                    CompanyID      = dataModel.comid,
                    ConnectTimeout = dataModel.timeout,
                    Database       = dataModel.dbase,
                    Password       = dataModel.pwd,
                    Server         = dataModel.dbserver,
                    UserID         = dataModel.uid
                };
                var _DbconnectionConfig = new DbConnectionConfig
                {
                    ConnectTimeout = dataModel.timeout,
                    Database       = dataModel.dbase,
                    Password       = dataModel.pwd,
                    Server         = dataModel.dbserver,
                    UserID         = dataModel.uid
                };
                ConfigHelper.Save(_DbconnectionConfig, filePath);
                return(_respond);
            }, string.Format(preCachedKey, "GetCompanyInfoViewModel"), false, request.CompanyID);

            return(respond);
        }
Ejemplo n.º 25
0
        public tb_App_UserEntity GetModelByCache(string openid)
        {
            string            key   = "appuser" + openid;
            tb_App_UserEntity model = null;
            object            obj   = MemcacheHelper.Get(key);

            if (obj != null)
            {
                model = Jnwf.Utils.Json.JsonHelper.DeserializeJson <tb_App_UserEntity>(obj.ToString());
            }
            return(model);
        }
Ejemplo n.º 26
0
        public RespondWebViewData <RespondEditSubCompanyViewModel> EditSubCompany(RequestWebViewData <RequestEditSubCompanyViewModel> request)
        {
            var rData = request.data;

            if (this.mSubCompanyDataAccess.CheckSubCompanyIsExist(new QuerySubCompanyListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber, SubComId = rData.ComId
            }))
            {
                return(new RespondWebViewData <RespondEditSubCompanyViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的分公司已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RespondEditSubCompanyViewModel>(WebViewErrorCode.Success);

            this.mDbConnection.ExecuteTransaction(tran =>
            {
                var company = this.mSubCompanyDataAccess.GetsubcompanyDataModelById(rData.ComId);
                if (company == null)
                {
                    respond = new RespondWebViewData <RespondEditSubCompanyViewModel>(WebViewErrorCode.NotExistsDataInfo);
                    return;
                }
                if (company.deleted == (short)CommonDeleted.Deleted)
                {
                    respond = new RespondWebViewData <RespondEditSubCompanyViewModel>(WebViewErrorCode.NotExistsDataInfo);
                    return;
                }

                var data = new subcompanyDataModel
                {
                    subcomid     = rData.ComId,
                    comment      = rData.Comment,
                    email        = rData.Email,
                    linktel      = rData.LinkTel,
                    linkman      = rData.LinkMan,
                    name         = rData.Name,
                    pinyin       = rData.Spelling,
                    pricemode    = rData.PriceMode,
                    serialnumber = rData.SerialNumber,
                    sort         = rData.Sort,
                    status       = company.status,
                    deleted      = company.deleted,
                    childnumber  = company.childnumber,
                    classid      = company.classid,
                    parentid     = company.parentid
                };
                this.mSubCompanyDataAccess.Update(data, tran);
                MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicSubCompany);

                //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                //this.SaveMongoDbData("编辑分公司资料", request, respond, this.GetType());
            });
            return(respond);
        }
Ejemplo n.º 27
0
        public RespondWebViewData <List <RespondQueryUserViewModel> > GetUserList(RequestWebViewData <RequestQueryUserViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <List <RespondQueryUserViewModel> > >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetUserList"),

                #region ============================================

                CallBackFunc = () =>
                {
                    var parameter = new QueryUserParameter
                    {
                        EmpId = request.data.EmpId,
                        PageIndex = request.page,
                        PageSize = request.rows,
                        UserName = request.data.UserName
                    };
                    var pageList = this.mUserDataAccess.GetUserPageData(parameter);
                    var respond = new RespondWebViewData <List <RespondQueryUserViewModel> >
                    {
                        total = pageList.DataCount,
                        rows = pageList.Datas.Select(item => new RespondQueryUserViewModel
                        {
                            CTime = item.CTime,
                            Comment = item.Comment,
                            EmpId = item.EmpId,
                            Manager = item.Manager,
                            Prefix = item.Prefix,
                            Status = item.Status,
                            UserName = item.UserName,
                            UsePwd = item.UsePwd,
                            UserId = item.UserId,
                            Deleted = item.Deleted,
                            Synchron = item.Synchron,
                            ComId = item.ComId
                        }).ToList()
                    };
                    return respond;
                },

                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.UserManage,
                ParamsKeys = new object[]
                {
                    request.data.EmpId,
                    request.page,
                    request.rows,
                    request.data.UserName
                }
            }));
        }
Ejemplo n.º 28
0
        //注销
        public ActionResult Logout()
        {
            string     result = "no";
            HttpCookie ck     = Request.Cookies["LData"];

            ck.Expires = DateTime.Now.AddDays(-1);
            if (MemcacheHelper.Delete(ck.Value))
            {
                result = "ok";
            }
            return(Content(result));
        }
Ejemplo n.º 29
0
        public RespondWebViewData <RespondQuerySubCompanyViewModel> GetSubCompanyByComId(RequestWebViewData <RequestGetSubCompanyByIdViewModel> request)
        {
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <RespondQuerySubCompanyViewModel> >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetSubCompanyByComId"),

                #region =================

                CallBackFunc = () =>
                {
                    var respond = new RespondWebViewData <RespondQuerySubCompanyViewModel>(WebViewErrorCode.NotExistsDataInfo)
                    {
                        rows = new RespondQuerySubCompanyViewModel()
                    };
                    var subCompany = this.mSubCompanyDataAccess.GetsubcompanyDataModelById(request.data.ComId);
                    if (subCompany == null)
                    {
                        return respond;
                    }
                    if (subCompany.deleted == (short)CommonDeleted.Deleted || subCompany.status != (short)CommonStatus.Used)
                    {
                        return respond;
                    }
                    respond = new RespondWebViewData <RespondQuerySubCompanyViewModel>
                    {
                        rows = new RespondQuerySubCompanyViewModel
                        {
                            ComId = subCompany.subcomid,
                            Comment = subCompany.comment,
                            Email = subCompany.email,
                            LinkMan = subCompany.linkman,
                            LinkTel = subCompany.linktel,
                            Name = subCompany.name,
                            PriceMode = subCompany.pricemode.ToString(),
                            SerialNumber = subCompany.serialnumber,
                            sort = subCompany.sort.ToString(),
                            Spelling = subCompany.pinyin
                        }
                    };
                    return respond;
                },

                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicSubCompany,
                ParamsKeys = new object[]
                {
                    request.data.ComId
                }
            }));
        }
Ejemplo n.º 30
0
        public RespondWebViewData <RespondEditProductViewModel> EditProduct(RequestWebViewData <RequestEditProductViewModel> request)
        {
            var rData   = request.data;
            var product = this.mProductDataAccess.GetproductDataModelById(rData.ProId);

            if (product == null)
            {
                return(new RespondWebViewData <RespondEditProductViewModel>(WebViewErrorCode.NotExistsDataInfo));
            }
            if (product.deleted == (short)CommonDeleted.Deleted)
            {
                return(new RespondWebViewData <RespondEditProductViewModel>(WebViewErrorCode.NotExistsDataInfo));
            }
            if (this.mProductDataAccess.CheckProductIsExist(new QueryProductListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber
            }))
            {
                return(new RespondWebViewData <RespondEditProductViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的商品已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RespondEditProductViewModel>(WebViewErrorCode.Success);

            try
            {
                this.mDbConnection.ExecuteTransaction(tran =>
                {
                    var data = new productDataModel
                    {
                        classid      = product.classid,
                        comment      = rData.Comment,
                        deleted      = product.deleted,
                        proid        = rData.ProId,
                        name         = rData.Name,
                        pinyin       = rData.Spelling,
                        parentid     = product.parentid,
                        serialnumber = rData.SerialNumber,
                        sort         = rData.Sort,
                        status       = product.status
                    };
                    this.mProductDataAccess.Update(data, tran);
                    MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicProduct);

                    //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                    //this.SaveMongoDbData("编辑商品资料", request, respond, this.GetType());
                });
            }
            catch (Exception ex)
            {
                respond = new RespondWebViewData <RespondEditProductViewModel>(WebViewErrorCode.Exception.ErrorCode, ex.Message);
            }
            return(respond);
        }