Exemple #1
0
        public async Task <dynamic> UserLogin(ApiLogingBean inEnt)
        {
            if (Request.Method.Method == "OPTIONS")
            {
                return(null);
            }
            ErrorInfo err = new ErrorInfo();

            Fun <ErrorInfo> .Valid(inEnt, ModelState, ref err);

            if (err.IsError)
            {
                return(err);
            }

            dynamic reEnt = await Task.Run(() => Fun <ErrorInfo> .Func(api.UserApi.UserLogin, ref err, inEnt));

            if (err.IsError)
            {
                return(err);
            }

            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(0, inEnt.loginName, DateTime.Now,
                                                                             DateTime.Now.AddHours(1), true, string.Format("{0}&{1}", inEnt.loginName, reEnt.Guid),
                                                                             FormsAuthentication.FormsCookiePath);

            //返回登录结果、用户信息、用户验证票据信息
            if (err.IsError)
            {
                return(err);
            }

            reEnt.Ticket = FormsAuthentication.Encrypt(ticket);
            return(reEnt);
        }
Exemple #2
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="inFun"></param>
 /// <returns></returns>
 public static dynamic Func(MyAction myAction, ref ErrorInfo err, ApiLogingBean inEnt)
 {
     try
     {
         var r = myAction(ref err, inEnt);
         return(r);
     }
     catch (Exception e) {
         err.IsError = true;
         err.Message = e.Message;
         return(err);
     }
 }
Exemple #3
0
        public async Task <dynamic> LoginReg(ApiLogingBean inEnt)
        {
            if (Request.Method.Method == "OPTIONS")
            {
                return(null);
            }
            ErrorInfo err = new ErrorInfo();

            Fun <ErrorInfo> .Valid(inEnt, ModelState, ref err);

            if (err.IsError)
            {
                return(err);
            }
            dynamic reEnt = await Task.Run(() => Fun <ErrorInfo> .Func(api.UserApi.LoginReg, ref err, inEnt));

            if (err.IsError)
            {
                return(err);
            }
            return(reEnt);
        }
Exemple #4
0
        public ErrorInfo LoginReg(ref ErrorInfo err, ApiLogingBean inEnt)
        {
            #region 检测输入
            if (string.IsNullOrEmpty(inEnt.loginName))
            {
                err.IsError = true;
                err.Message = "电话号码不能为空";
                return(err);
            }

            if (!inEnt.loginName.IsOnlyNumber() || inEnt.loginName.Length != 11)
            {
                err.IsError = true;
                err.Message = "电话号码格式不正确";
                return(err);
            }

            if (!Fun.CheckPassword(ref err, inEnt.passWord))
            {
                err.Message = string.Format("密码复杂度不够:{0}", err.Message);
                err.IsError = true;
                return(err);
            }
            #endregion

            using (DBEntities db = new DBEntities())
            {
                #region 检测验证码
                if (AppSet.VerifyCode)
                {
                    var nowDate = DateTime.Now.AddMinutes(-30);
                    var codeNum = db.fa_sms_send.Where(x =>
                                                       x.ADD_TIME > nowDate &&
                                                       x.PHONE_NO == inEnt.loginName &&
                                                       x.CONTENT == inEnt.code
                                                       ).Count();
                    if (codeNum == 0)
                    {
                        err.IsError = true;
                        err.Message = "验证码无效";
                        return(err);
                    }
                }
                #endregion

                var userList = db.fa_user.Where(x => x.LOGIN_NAME == inEnt.loginName).ToList();
                #region 检测电话号码是否存在
                if (userList.Count() > 0)
                {
                    err.IsError = true;
                    err.Message = "电话号码已经存在,请更换电话号码";
                    return(err);
                }
                #endregion

                var loginList = db.fa_login.Where(x => x.LOGIN_NAME == inEnt.loginName).ToList();

                #region 添加登录账号
                if (loginList.Count() == 0)
                {
                    LOGIN inLogin = new LOGIN();
                    inLogin.LOGIN_NAME = inEnt.loginName;
                    inLogin.PASSWORD   = inEnt.passWord;
                    Z_Login zLogin    = new Z_Login();
                    var     isAddSucc = zLogin.Login_Save(db, null, ref err, inLogin, null);
                    if (isAddSucc == null)
                    {
                        return(err);
                    }
                }
                #endregion

                #region 添加user
                TUser inUser = new TUser();
                inUser.LOGIN_NAME = inEnt.loginName;
                inUser.NAME       = inEnt.userName;
                var user = Mapper.Map <fa_user>(inUser);
                user.ID = Fun.GetCurrvalSeqID <fa_user>();
                db.fa_user.Add(user);
                #endregion

                //var userInfo = db.fa_user_info.SingleOrDefault(x => x.ID == user.ID);
                //if (userInfo == null)
                //{
                //    userInfo = new fa_user_info { ID = user.ID };
                //    db.fa_user_info.Add(userInfo);
                //}
                err.Message = user.ID.ToString();
                // 提交事务数据
                Fun.DBEntitiesCommit(db, ref err);
                return(err);
            }
        }
Exemple #5
0
        public GlobalUser UserLogin(ref ErrorInfo err, ApiLogingBean inEnt)
        {
            GlobalUser gu = new GlobalUser();

            if (string.IsNullOrEmpty(inEnt.loginName) || string.IsNullOrEmpty(inEnt.passWord))
            {
                err.IsError = true;
                err.Message = "用户名和密码不能为空";
                return(gu);
            }

            using (DBEntities db = new DBEntities())
            {
                var Login = db.fa_login.FirstOrDefault(x => x.LOGIN_NAME == inEnt.loginName);
                var user  = db.fa_user.FirstOrDefault(x => x.LOGIN_NAME == inEnt.loginName);
                if (Login == null || user == null)
                {
                    err.IsError = true;
                    err.Message = "用户名或者密码错误";
                    return(gu);
                }
                else
                {
                    if (Login.IS_LOCKED == 1)
                    {
                        err.IsError = true;
                        err.Message = string.Format("用户已被锁定【{0}】", Login.LOCKED_REASON);
                        return(gu);
                    }

                    if (Login.PASSWORD.ToUpper() != inEnt.passWord.Md5().ToUpper() && Login.PASSWORD.ToUpper() != inEnt.passWord.SHA1().ToUpper())
                    {
                        #region 密码错误
                        int times = 5;
                        if (Login.FAIL_COUNT == 0)
                        {
                            Login.FAIL_COUNT = 1;
                        }
                        if (inEnt.passWord != "Easyman123@@@")
                        {
                            err.IsError = true;
                            err.Message = string.Format("用户名或者密码错误,还有{0}次尝试机会", (times - Login.FAIL_COUNT).ToString());
                            if (Login.FAIL_COUNT >= times)
                            {
                                user.IS_LOCKED      = 1;
                                Login.IS_LOCKED     = 1;
                                Login.LOCKED_REASON = string.Format("用户连续5次错误登陆,帐号锁定。");
                                Login.FAIL_COUNT    = 0;
                            }
                            else
                            {
                                Login.FAIL_COUNT++;
                            }
                            Fun.DBEntitiesCommit(db, ref err);
                            return(null);
                        }
                        #endregion
                    }
                    else //密码正确
                    {
                        Login.FAIL_COUNT = 0;
                    }
                    var obj = UserLogin(db, ref err, inEnt.loginName, inEnt.imei);

                    Fun.DBEntitiesCommit(db, ref err);

                    if (obj == null || err.IsError)
                    {
                        return(null);
                    }
                    else
                    {
                        return((GlobalUser)obj);
                    }
                }
            }
        }