/// <summary> /// 登录用户_平台 /// </summary> /// <param name="ledger"></param> /// <param name="uSign"></param> /// <param name="pwd"></param> /// <returns></returns> public APIRst Login(int ledger, string uSign, string pwd) { //bll = new YDS6000.BLL.ExpAdminApp.Home.ExpAdminHomeBLL(WebConfig.SysProject, user.Ledger, user.Uid); APIRst rst = new APIRst(); if (string.IsNullOrEmpty(uSign)) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "用户名不能为空"; return(rst); } if (string.IsNullOrEmpty(pwd)) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "密码不能为空"; return(rst); } try { DataTable dtLedger = new YDS6000.BLL.ExpApp.Home.HomeBLL(9999, 0).GetProjectList(); foreach (DataRow dr in dtLedger.Rows) { ledger = CommFunc.ConvertDBNullToInt32(dr["Rule"]); } bll = new YDS6000.BLL.ExpAdminApp.Home.ExpAdminHomeBLL(WebConfig.SysProject, ledger, user.Uid); DataTable dtSource = bll.GetSys_user(uSign); int nRows = dtSource.Rows.Count; if (nRows == 0) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "没有此用户"; return(rst); } else if (nRows != 1) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "此用户有多个"; return(rst); } int uid = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["Uid"]); string uName = CommFunc.ConvertDBNullToString(dtSource.Rows[0]["UName"]); string dbPwd = CommFunc.ConvertDBNullToString(dtSource.Rows[0]["UPasswd"]); string project = CommFunc.ConvertDBNullToString(dtSource.Rows[0]["Project"]); int role_id = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["Role_id"]); if (!pwd.Trim().Equals(dbPwd)) { //查询最后最后的登录时间,判断如果少于十五分钟且错误次数已经为五次,提示十五分钟后再次登录 int num = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["LoginInt"]); DateTime dt = CommFunc.ConvertDBNullToDateTime(dtSource.Rows[0]["LoginDate"]); TimeSpan ts = new TimeSpan(); ts = DateTime.Now - dt; //现在时间-数据库时间 int Result = Convert.ToInt32(ts.TotalMinutes); //转换时间间隔为 分钟 Double型转化成Int型 if (Result < 15 && num > 4) { rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "登录的次数超过了规定次数,请十五分钟后再试"; return(rst); } //登录密码错误,将登录错误次数+1 bll.UpdateLoginErr(uSign); rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = "密码错误"; return(rst); } ////// //WebConfig.Ledger = ledger; WebConfig.SysProject = project; ////// int seed = new Random(Guid.NewGuid().GetHashCode()).Next(65, 91); string zm = CommFunc.NunberToChar(seed); zm = string.IsNullOrEmpty(zm) ? "A" : zm; string ticket = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10) + zm + (ledger + seed).ToString() + zm + (seed + uid).ToString(); string ccKey = ledger.ToString() + "AdminApp" + uid.ToString(); CacheUser cacheUser = new CacheUser(); cacheUser.Ledger = ledger; cacheUser.Uid = uid; cacheUser.USign = uSign; cacheUser.Role_id = role_id; cacheUser.CacheKey = project + "->" + ledger + "->"; //随机数前10位+ 种子数+ (种子数+用户数之和) cacheUser.Ticket = ticket;// Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10) + (seed + cacheUser.Uid).ToString().PadLeft(7, '0'); // bll.UpdateLoginSue(uSign); rst.err.code = 0; rst.data = new { Ticket = cacheUser.Ticket, Name = uName }; // int timeSpan = CommFunc.ConvertDBNullToInt32(ConfigHelper.GetAppSettings("Cached:Time")); timeSpan = timeSpan == 0 ? 15 : timeSpan; HttpRuntime.Cache.Insert(ccKey, cacheUser, null, DateTime.MaxValue, TimeSpan.FromMinutes(timeSpan)); HttpContext.Current.Session["CacheUser"] = cacheUser; } catch (Exception ex) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = ex.Message; FileLog.WriteLog("登录错误:" + ex.Message + ex.StackTrace); } return(rst); }
/// <summary> /// 构造方法 /// </summary> public ExpAdminHomeHelper() { user = WebConfig.GetSession(); bll = new YDS6000.BLL.ExpAdminApp.Home.ExpAdminHomeBLL(WebConfig.SysProject, user.Ledger, user.Uid); }