public OperateStatus CheckLogin(BaseUser User) { OperateStatus op = new OperateStatus { IsSuccessful = false, Message = "初始异常!" }; var aa = 999; var bb = "111111"; var cc = DEncrypt.Get32_MD5Lower(bb, null); var dd = DEncrypt.Get32_MD5Lower(cc + aa, null); try { //取得静态数据--登录失效时间 int LoginStateTime = int.Parse(GlobalStaticParam.GetByCode("LoginStateTime").ToString()); #region 用户名密码验证 //根据用户名查询数据 var queryuser = activeContext.Org_User.FirstOrDefault(p => p.Id == User.Id || p.LoginName == User.LoginName || (!string.IsNullOrEmpty(p.Phone) && p.Phone == User.Phone) || (!string.IsNullOrEmpty(p.Email) && p.Email == User.Email)); if (queryuser == null) //如果用户名不存在 { op.Message = "用户不存在,请检查用户名!"; return(op); } //用户被冻结 if (queryuser.IsFreeze) { op.Message = "登录失败!用户已被冻结!"; return(op); } //如果用户名存在 //1.取得提交的密码明文 //明文加密为初始密码(第一次加密) //因为前台已经加密,所以这里就用提交的密文作为第一次加密内容,不再不加密了.注意:前台加密要和后台加密算法相同 string pwtext = User.PassWord; //前台提交的时候请使用此属性 //取得用户随机数 var userRandom = queryuser.Random; //用提交的密文+用户随机数,再次加密,生成提交的最后密码 var lastPassWord = DEncrypt.Get32_MD5Lower(pwtext + userRandom, null); if (pwtext != queryuser.SourcePW || lastPassWord != queryuser.PassWord) { op.Message = "密码不正确!"; return(op); } #endregion #region 查看是否有用户登录状态 var LoginState = (from a in activeContext.Sys_UserLoginState where (a.LoginName.Equals(queryuser.LoginName)) select a).FirstOrDefault(); if (LoginState == null) { Sys_UserLoginState UsersLoginState = new Sys_UserLoginState(); UsersLoginState.Id = Guid.NewGuid(); UsersLoginState.SessionId = Guid.NewGuid().ToString().Replace("-", ""); UsersLoginState.UserId = queryuser.Id; UsersLoginState.LoginName = queryuser.LoginName; UsersLoginState.LastTime = DateTime.Now; UsersLoginState.EqpMark = User.EquipmentMark; UsersLoginState.PeriodTime = UsersLoginState.LastTime.AddHours(LoginStateTime); //延长时间 activeContext.Sys_UserLoginState.Add(UsersLoginState); activeContext.SaveChanges(); } else { LoginState.EqpMark = User.EquipmentMark; LoginState.LastTime = DateTime.Now; LoginState.PeriodTime = LoginState.LastTime.AddHours(LoginStateTime); //延长时间 activeContext.SaveChanges(); } #endregion op.IsSuccessful = true; op.Message = ""; //op.Data = returnUser; } catch (Exception ex) { op.IsSuccessful = false; op.Message = ex.Message; } return(op); }