public JObject Post([FromBody] object value)//更改SubServer的信息,比如自定义名称
        {
            #region 注销检测
            string token = JwtManager.GetRequestTokenString(Request);
            var    redis = RedisHelper.GetRedisHelper();
            if (!redis.SignInCheck(token))
            {
                return(null);//返回错误信息提示重新登录
            }
            #endregion

            JObject result;
            #region 具体逻辑
            //待写
            JObject regform = (JObject)value;//获取Json



            #endregion
            ErrorRootobject errorRootobject = new ErrorRootobject()
            {
                ReturnCode = "11111",
                msg        = "DeviceInfo Update Successful"
            };

            string serial = JsonConvert.SerializeObject(errorRootobject);
            result = (JObject)JsonConvert.DeserializeObject(serial);

            return(result);
        }
Ejemplo n.º 2
0
        public async Task <JObject> PostAsync([FromBody] object value)
        {
            //#region 注销检测
            //string token = JwtManager.GetRequestTokenString(Request);
            //var redis = RedisHelper.GetRedisHelper();
            //if (!redis.SignInCheck(token))
            //{
            //    return null;//返回错误信息提示重新登录
            //}
            //#endregion

            #region 变量声明以及初始化
            JObject jObject = (JObject)value;
            JObject result;
            string  acToken;
            string  subServerId;
            string  device_Ip;
            string  username             = "******";
            bool    acTokenDanger        = false;
            bool    subserveripDanger    = false;
            bool    deviceipDanger       = false;
            bool    subserveridAvailable = false;
            bool    deviceipAvailable    = false;
            string  buser1 = "buser";
            string  buser2;

            ErrorRootobject error = new ErrorRootobject
            {
                ReturnCode = "0001",
                msg        = "JSON format error"
            };
            ControlMsgRootobject controlMsg = new ControlMsgRootobject
            {
                DeviceIP = "F0-79-59-17-58-B7"
            };
            string serial = JsonConvert.SerializeObject(error);
            result = (JObject)JsonConvert.DeserializeObject(serial);
            #endregion

            #region 获取JSON内容
            try
            {
                // acToken = jObject["actoken"].ToString();
                subServerId = jObject["subserverId"].ToString();
                device_Ip   = jObject["deviceIP"].ToString();
                //  acTokenDanger = Regex.IsMatch(acToken, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");//排查危险字符
                subserveripDanger    = Regex.IsMatch(subServerId, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");
                subserveridAvailable = true;
                deviceipDanger       = Regex.IsMatch(subServerId, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");
                deviceipAvailable    = Regex.IsMatch(device_Ip, @"((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))");
            }

            catch (Exception)
            {
                error.ReturnCode = "2009";
                error.msg        = "JSON format is incorrect";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查危险字符
            if (acTokenDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "2003",
                    msg        = "Token contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (subserveripDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "2002",
                    msg        = "subserverid contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (deviceipDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "2008",
                    msg        = "deviceip contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            #endregion

            #region 检查ip是否合格

            if (!subserveridAvailable)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "2005",
                    msg        = "subserverid is not available "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (!deviceipAvailable)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "2006",
                    msg        = "deviceIP is not available "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            #endregion

            controlMsg.DeviceIP = device_Ip;

            //#region 查询Token是否有效
            //var conn = anJiaContext.Database.GetDbConnection();
            //conn.Open();
            //var command = conn.CreateCommand();
            //string query = "SELECT Username "
            //    + "FROM Users "
            //    + "WHERE AccessToken = '" + acToken + "'";
            //command.CommandText = query;
            //try
            //{
            //    DbDataReader unameReader = await command.ExecuteReaderAsync();
            //    unameReader.Read();//Read must be called first
            //    username = unameReader["Username"].ToString();
            //    conn.Close();

            //}
            //catch (Exception)
            //{
            //    conn.Close();
            //    error = new ErrorRootobject
            //    {
            //        ReturnCode = "1004",
            //        msg = " Invalid access_Token "
            //    };

            //    serial = JsonConvert.SerializeObject(error);//将实体类序列化   为JSON字符串
            //    result = (JObject)JsonConvert.DeserializeObject(serial);//将JSON字符串反序列化为JObject对象
            //    return result;

            //}
            //#endregion

            //#region 查询子服务器MAC对应的用户名
            ////查询MAC是否匹配有Username保证了一个MAC只对应一个User
            //conn = anJiaContext.Database.GetDbConnection();
            //conn.Open();
            //command = conn.CreateCommand();
            //query = "SELECT  Username"
            //    + " FROM UserToSubserver "
            //    + "WHERE SubserverID = '" + subServerId + "'";
            //command.CommandText = query;
            //DbDataReader BindedReader = await command.ExecuteReaderAsync();
            //if (BindedReader.HasRows)
            //{
            //    //如果查询到被绑定
            //    //我担心会查出一个MAC地址绑定了多个用户的情况
            //    //后期可以设置让MAC地址为主键
            //    BindedReader.Read();
            //    buser1 = BindedReader["Username"].ToString();

            //}
            //conn.Close();

            //#endregion

            //#region Token对应的用户名

            ////查询MAC是否匹配有Username保证了一个MAC只对应一个User
            //conn = anJiaContext.Database.GetDbConnection();
            //conn.Open();
            //command = conn.CreateCommand();
            //query = "SELECT  Username"
            //    + " FROM Users "
            //    + "WHERE AccessToken = '" + acToken + "'";
            //command.CommandText = query;
            //DbDataReader BUserReader = await command.ExecuteReaderAsync();
            //if (BUserReader.HasRows)
            //{
            //    //如果查询到被绑定
            //    //我担心会查出一个MAC地址绑定了多个用户的情况
            //    //后期可以设置让MAC地址为主键
            //   BUserReader.Read();
            //    buser2 = BUserReader["Username"].ToString();

            //如果子服务器对应的用户名和token对应的用户名相同
            if (true)
            {
                bool sendSuccess = await WebsocketClient.SendToSubserverAsync(subServerId, controlMsg);     //发送给指定MAC信息

                if (sendSuccess)
                {
                    error.ReturnCode = "2000";
                    error.msg        = " ControlMsg send success";

                    serial = JsonConvert.SerializeObject(error);
                    result = (JObject)JsonConvert.DeserializeObject(serial);
                }
                else
                {
                    //
                    error.ReturnCode = "2001";
                    error.msg        = "  Subserver offline";
                    serial           = JsonConvert.SerializeObject(error);
                    result           = (JObject)JsonConvert.DeserializeObject(serial);

                    //接下来对表进行更改
                }

                //  conn.Close();//关闭连接
                return(result);
            }
            else
            {
                //提示没有对此服务器操作权限
                error.ReturnCode = "2007";
                error.msg        = " You do not have permission to operate this subserver ";

                serial = JsonConvert.SerializeObject(error);
                result = (JObject)JsonConvert.DeserializeObject(serial);
                //  conn.Close();//关闭连接
                return(result);
            }

            //     }
            // conn.Close();



            // #endregion

            return(result);
        }
        public async System.Threading.Tasks.Task <JObject> PostAsync([FromBody] object value)
        {
            #region 变量声明以及初始化
            JObject jObject = (JObject)value; //获取为Json对象
            JObject result;                   //返回结果


            ErrorRootobject error = new ErrorRootobject();
            error.ReturnCode = "00001";
            error.msg        = "JSON format error";

            string serial = JsonConvert.SerializeObject(error);      //将实体类序列化为JSON字符串

            result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            string username = "******";
            string password = "******";
            #endregion

            #region 检查表单
            try
            {
                username = jObject["username"].ToString();
                password = jObject["password"].ToString();
            }
            catch
            {
                error.ReturnCode = "00001";
                error.msg        = "JSON format error";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 用户名以及密码的判空
            if (username == "" || password == "")
            {
                error.ReturnCode = "00009";
                error.msg        = "Username or password can not be null";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 用户名以及密码的危险字符检查
            //排查危险字符
            bool unameDanger = Regex.IsMatch(username, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");
            bool pwdDanger   = Regex.IsMatch(password, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");

            if (unameDanger)
            {
                //失败后返回错误原因:
                error            = new ErrorRootobject();
                error.ReturnCode = "0002";
                error.msg        = "Username contains dangerous characters ";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (pwdDanger)
            {
                //失败后返回错误原因:
                error            = new ErrorRootobject();
                error.ReturnCode = "0003";
                error.msg        = "Password contains dangerous characters ";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查用户名是否存在
            //将安全的用户名和密码查询数据库
            //首先查询用户名是否存在
            var conn = anJiaContext.Database.GetDbConnection();
            conn.Open();
            var    command = conn.CreateCommand();
            string query   = "SELECT Username "
                             + "FROM Users "
                             + "WHERE Username = '******'";
            command.CommandText = query;
            DbDataReader unameReader = await command.ExecuteReaderAsync();

            //用户名不存在
            if (!unameReader.HasRows)
            {
                conn.Close();

                //密码不匹配返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "0004",
                    msg        = "Username does not exist"
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                unameReader.Dispose();                                   //释放资源
                return(result);
            }
            else
            {
                conn.Close();
            }

            #endregion

            #region 用户名与密码匹配验证

            conn.Open();
            query = "SELECT Username, Password "
                    + "FROM Users "
                    + "WHERE Username = '******'" + " AND password = '******'";
            command.CommandText = query;
            DbDataReader reader = await command.ExecuteReaderAsync();

            if (reader.HasRows)
            {
                conn.Close();                                                         //关闭连接

                var accessToken = JwtManager.GetJwtManager().GenerateToken(username); //生成Token
                var redis       = RedisHelper.GetRedisHelper();

                redis.SetValue(username, accessToken);//在redis中建立用户名和Token的对应关系

                LoginSuccessRootobject actoken = new LoginSuccessRootobject
                {
                    AccessToken = accessToken//获取一个Token
                };

                error = new ErrorRootobject
                {
                    ReturnCode = "0010",
                    msg        = "Token failed to get"
                };
                serial = JsonConvert.SerializeObject(actoken);           //将实体类序列化为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            }
            else
            {
                conn.Close();
                //密码不匹配返回错误原因:
                error            = new ErrorRootobject();
                error.ReturnCode = "0005";
                error.msg        = "Incorrect username or password";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            }
            reader.Dispose();                                            //释放资源

            #endregion

            return(result);
        }
Ejemplo n.º 4
0
        public async Task <JObject> PostAsync([FromBody] object value)
        {
            #region 注销检测
            string token = JwtManager.GetRequestTokenString(Request);
            var    redis = RedisHelper.GetRedisHelper();
            if (!redis.SignInCheck(token))
            {
                return(null);//返回错误信息提示重新登录
            }
            #endregion
            #region 变量声明以及初始化
            JObject         regform = (JObject)value;
            JObject         result;//返回结果
            ErrorRootobject error = new ErrorRootobject
            {
                ReturnCode = "00001",
                msg        = "JSON format error"
            };
            string serial = JsonConvert.SerializeObject(error);      //将实体类序列化为JSON字符串
            result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            string acToken  = "token";
            string email    = "email";
            string phonenum = "phonenum";
            string sex      = "sex";
            string username = "******";
            #endregion

            #region 检查表单
            try
            {
                acToken  = regform["AccessToken"].ToString();
                email    = regform["Email"].ToString();
                phonenum = regform["Phonenum"].ToString();
                sex      = regform["Sex"].ToString();
            }
            catch (Exception)
            {
                error.ReturnCode = "0009";
                error.msg        = "JSON format error";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象

                return(result);
            }
            #endregion

            #region 排查危险字符
            ;
            bool emailCheck   = Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"); //检查邮箱格式
            bool phonnumCheck = Regex.IsMatch(phonenum, @"^1[3|4|5|7|8][0-9]{9}$");                          //检查手机号格式
            bool sexCheck     = Regex.IsMatch(sex, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");
            bool tokenCheck   = Regex.IsMatch(acToken, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");

            bool[] check = { emailCheck, phonnumCheck, sexCheck, tokenCheck };
            List <KeyValuePair <String, Boolean> > paraList = new List <KeyValuePair <string, bool> >
            {
                new KeyValuePair <string, bool>("1003", tokenCheck),
                new KeyValuePair <string, bool>("0006", emailCheck),
                new KeyValuePair <string, bool>("0011", sexCheck),
            };
            foreach (var i in paraList)
            {
                if (i.Value)
                {
                    //失败后返回错误原因:
                    error = new ErrorRootobject
                    {
                        ReturnCode = i.Key,
                        msg        = " contains dangerous characters "
                    };

                    serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                    result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                    return(result);
                }
            }


            #endregion

            #region 检查Token
            var conn = anJiaContext.Database.GetDbConnection();
            conn.Open();
            var    command = conn.CreateCommand();
            string query   = "SELECT Username "
                             + "FROM Users "
                             + "WHERE AccessToken = '" + acToken + "'";
            //command.CommandText = query;
            //try
            //{
            //    DbDataReader unameReader = await command.ExecuteReaderAsync();

            //    unameReader.Read();

            //    username = unameReader["Username"].ToString();
            //    conn.Close();

            //}
            //catch (Exception)
            //{
            //    error = new ErrorRootobject
            //    {
            //        error_code = "1004",
            //        msg = " Token does not exist "
            //    };

            //    serial = JsonConvert.SerializeObject(error);//将实体类序列化   为JSON字符串
            //    result = (JObject)JsonConvert.DeserializeObject(serial);//将JSON字符串反序列化为JObject对象
            conn.Close();
            //    return result;

            //}

            var    claimsPrincipal = JwtManager.GetPrincipal(acToken);
            string name            = "null";
            if (claimsPrincipal != null)
            {
                name = claimsPrincipal.Identity.Name.ToString();
            }
            else
            {
                error = new ErrorRootobject
                {
                    ReturnCode = "0012",
                    msg        = "Token Expire"         //令牌过期
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象

                return(result);
            }



            #endregion

            #region 更新信息

            command = conn.CreateCommand();
            conn.Open();
            query = "UPDATE Users "
                    + " SET  email = '" + email + "', "
                    + " phonenum = '" + phonenum + "', "
                    + " Sex = '" + sex + "' "
                    + " WHERE Username = '******'";
            command.CommandText = query;
            try
            {
                DbDataReader BindingReader = await command.ExecuteReaderAsync();

                error = new ErrorRootobject
                {
                    ReturnCode = "0000",
                    msg        = "Update success"
                };
                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
                BindingReader.Dispose();                                 //释放资源
            }
            catch (Exception)
            {
                //绑定失败
                error = new ErrorRootobject
                {
                    ReturnCode = "0012",
                    msg        = "Update failed"
                };
                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
            }


            #endregion


            return(result);
        }
Ejemplo n.º 5
0
        public async Task <JObject> PostAsync([FromBody] object value)
        {
            #region 注销检测
            string token = JwtManager.GetRequestTokenString(Request);
            var    redis = RedisHelper.GetRedisHelper();
            if (!redis.SignInCheck(token))
            {
                return(null);//返回错误信息提示重新登录
            }
            #endregion

            #region 变量声明以及初始化
            JObject jObject = (JObject)value;
            JObject result;
            string  acToken;
            string  subServerId;;
            string  username      = "******";
            bool    acTokenDanger = false;
            bool    macDanger     = false;
            bool    macAvailable  = false;


            ErrorRootobject error = new ErrorRootobject
            {
                ReturnCode = "0001",
                msg        = "JSON format error"
            };
            string serial = JsonConvert.SerializeObject(error);
            result = (JObject)JsonConvert.DeserializeObject(serial);
            #endregion

            #region 获取JSON内容
            try
            {
                acToken       = jObject["actoken"].ToString();
                subServerId   = jObject["subserverId"].ToString();
                acTokenDanger = Regex.IsMatch(acToken, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");//排查危险字符
                macDanger     = Regex.IsMatch(subServerId, @"[|;|,|\/|||||\}|\{|%|@|\*|!|\']");
                macAvailable  = true;
            }
            catch (Exception)
            {
                error.ReturnCode = "1001";
                error.msg        = "JSON format is incorrect";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查危险字符
            if (acTokenDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "1003",
                    msg        = "Token contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (macDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "1002",
                    msg        = "MAC contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查MAC是否合格

            if (!macAvailable)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "1011",
                    msg        = "MAC is not available "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            #endregion

            #region 查询Token是否有效
            var conn = anJiaContext.Database.GetDbConnection();
            conn.Open();
            var    command = conn.CreateCommand();
            string query   = "SELECT Username "
                             + "FROM Users "
                             + "WHERE AccessToken = '" + acToken + "'";
            command.CommandText = query;
            try
            {
                DbDataReader unameReader = await command.ExecuteReaderAsync();

                unameReader.Read();//Read must be called first
                username = unameReader["Username"].ToString();
                conn.Close();
            }
            catch (Exception)
            {
                conn.Close();
                error = new ErrorRootobject
                {
                    ReturnCode = "1004",
                    msg        = " Invalid access_Token "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 查询MAC是否已经被绑定
            //查询MAC是否匹配有Username保证了一个MAC只对应一个User
            conn = anJiaContext.Database.GetDbConnection();
            conn.Open();
            command = conn.CreateCommand();
            query   = "SELECT  Username"
                      + " FROM UserToSubserver "
                      + "WHERE SubserverID = '" + subServerId + "'";
            command.CommandText = query;
            DbDataReader BindedReader = await command.ExecuteReaderAsync();

            if (BindedReader.HasRows)
            {
                //如果查询到被绑定
                //我担心会查出一个MAC地址绑定了多个用户的情况
                //后期可以设置让MAC地址为主键
                BindedReader.Read();
                string buser = BindedReader["Username"].ToString();
                error.ReturnCode = "1005";
                error.msg        = " This Subserver is owned by " + buser;

                serial = JsonConvert.SerializeObject(error);
                result = (JObject)JsonConvert.DeserializeObject(serial);
                conn.Close();//关闭连接
                return(result);
            }
            conn.Close();

            #endregion

            #region 绑定MAC
            conn.Open();
            string UTSBindingTime = DateTime.Now.ToString("yyyy-MM-dd") + " " + DateTime.Now.TimeOfDay.ToString();
            query = "INSERT INTO UserToSubserver (SubServerID, UTSBindingTime,Username)"
                    + "VALUES( '"
                    + subServerId + "', '"
                    + UTSBindingTime + "', '"
                    + username
                    + "'  ) ";
            command.CommandText = query;
            try
            {
                DbDataReader BindingReader = await command.ExecuteReaderAsync();

                error = new ErrorRootobject
                {
                    ReturnCode = "0008",
                    msg        = "SubServer binding success"
                };
                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
                BindingReader.Dispose();                                 //释放资源
            }
            catch (Exception)
            {
                //绑定失败
                error = new ErrorRootobject
                {
                    ReturnCode = "0009",
                    msg        = "SubServer binding failed"
                };
                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
            }

            #endregion

            return(result);
        }
Ejemplo n.º 6
0
        public async Task <JObject> PostAsync([FromBody] object value)
        {
            #region 变量声明以及初始化
            string          username = "******";
            string          password = "******";
            string          email    = "email";
            string          phonenum = "phonenum";
            string          sex      = "sex";
            JObject         regform  = (JObject)value; //接收注册表单
            JObject         result;                    //返回结果
            ErrorRootobject error = new ErrorRootobject();
            error.ReturnCode = "00001";
            error.msg        = "JSON format error";

            string serial = JsonConvert.SerializeObject(error);      //将实体类序列化为JSON字符串

            result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            #endregion

            #region 检查表单必填项
            try
            {
                username = regform["username"].ToString();
                password = regform["password"].ToString();
                email    = regform["email"].ToString();
                phonenum = regform["phonenum"].ToString();
                sex      = regform["sex"].ToString();
            }
            catch (Exception)
            {
                error.ReturnCode = "0009";
                error.msg        = "JSON format error";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象

                return(result);
            }

            if (username == "" || password == "")
            {
                error.ReturnCode = "00009";
                error.msg        = "Username or password can not be null";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查危险字符
            bool unameDanger  = Regex.IsMatch(username, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");
            bool pwdDanger    = Regex.IsMatch(username, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");
            bool emailCheck   = Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"); //检查邮箱格式
            bool phonnumCheck = Regex.IsMatch(phonenum, @"^1[3|4|5|7|8][0-9]{9}$");                          //检查手机号格式

            if (unameDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "0002",
                    msg        = "Username contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            if (pwdDanger)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "0003",
                    msg        = "Password contains dangerous characters "
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            if (!emailCheck)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "0006",
                    msg        = "The e-mail address format is incorrect"
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            if (!phonnumCheck)
            {
                //失败后返回错误原因:
                error = new ErrorRootobject
                {
                    ReturnCode = "0007",
                    msg        = "The phone number format is incorrect"
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 查询用户名是否存在
            var conn = anJiaContext.Database.GetDbConnection();
            conn.Open();
            var    command = conn.CreateCommand();
            string query   = "SELECT Username "
                             + "FROM Users "
                             + "WHERE Username = '******'";
            command.CommandText = query;
            DbDataReader unameReader = await command.ExecuteReaderAsync();


            //用户名存在
            if (unameReader.HasRows)
            {
                //用户名已经被注册
                error = new ErrorRootobject
                {
                    ReturnCode = "0008",
                    msg        = "Username has been registered"
                };
                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
                unameReader.Dispose();                                   //释放资源
                return(result);
            }
            #endregion
            conn.Close();
            #region 注册用户
            conn.Open();
            string registDate = DateTime.Now.ToString("yyyy-MM-dd") + " " + DateTime.Now.TimeOfDay.ToString();
            query = "INSERT INTO Users (Email, Password, Phonenum, RegistDate, Sex, Username)"
                    + "VALUES( '"
                    + email + " ' ,  '"
                    + password + " ' ,  '"
                    + phonenum + " ' ,  '"
                    + registDate + " ' ,  '"
                    + sex + " ' ,  '"
                    + username + " '  ) ";
            command.CommandText = query;
            try
            {
                DbDataReader reader = await command.ExecuteReaderAsync();//默认值

                error = new ErrorRootobject
                {
                    ReturnCode = "0000",
                    msg        = "Register Successful"
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                conn.Close();
                reader.Dispose();                                        //释放资源
            }
            catch (Exception)
            {
                conn.Close();

                error = new ErrorRootobject
                {
                    ReturnCode = "0011",
                    msg        = "Registration failed"
                };

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }


            //密码匹配之后返回J



            #endregion

            return(result);
        }
        public async Task <JObject> Get(string username)
        {
            #region 变量声明以及初始化


            JObject result;//返回结果

            StringValues JwtBearer;
            Request.Headers.TryGetValue("Authorization", out JwtBearer);
            string   JwtBearerString = JwtBearer.ToString();
            string[] sArray          = JwtBearerString.Split(' ');
            string   acToken         = sArray[1];                    //分离出Token

            var claimsPrincipal = JwtManager.GetPrincipal(acToken);  //对Token

            string uname = claimsPrincipal.Identity.Name.ToString(); //获取用户名



            ErrorRootobject error = new ErrorRootobject
            {
                ReturnCode = "00001",
                msg        = "JSON format error"
            };

            string serial = JsonConvert.SerializeObject(error);        //将实体类序列化为JSON字符串

            result   = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            username = "******";


            if (uname != username)//提交的用户名与Token不匹配
            {
                ErrorRootobject error1 = new ErrorRootobject
                {
                    ReturnCode = "00001",
                    msg        = "User and Token mismatch"
                };

                string serial1 = JsonConvert.SerializeObject(error1);     //将实体类序列化为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial1); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 检查表单
            try
            {
            }
            catch
            {
                error.ReturnCode = "00001";
                error.msg        = "JSON format error";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 用户名以及密码的判空
            if (username == "")
            {
                error.ReturnCode = "00009";
                error.msg        = "Username can not be null";
                serial           = JsonConvert.SerializeObject(error);             //将实体类序列化为JSON字符串
                result           = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }
            #endregion

            #region 用户名以及密码的危险字符检查
            //排查危险字符
            bool unameDanger = Regex.IsMatch(username, @"[-|;|,|\/|||||\}|\{|%|@|\*|!|\']");

            if (unameDanger)
            {
                //失败后返回错误原因:
                error            = new ErrorRootobject();
                error.ReturnCode = "0002";
                error.msg        = "Username contains dangerous characters ";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
                return(result);
            }

            #endregion

            #region 查询用户信息
            var conn = anJiaContext.Database.GetDbConnection();

            conn.Open();
            var    command = conn.CreateCommand();
            string query   = "SELECT Username,Email,  Phonenum, RegistDate, Sex, Username"
                             + "FROM Users "
                             + "WHERE Username = '******'";
            command.CommandText = query;
            DbDataReader reader = await command.ExecuteReaderAsync();

            if (reader.HasRows)
            {
                conn.Close();//关闭连接

                reader.Read();
                username = reader["Username"].ToString();
                string Email      = reader["Email"].ToString();
                string Phonenum   = reader["Phonenum"].ToString();
                string RegistDate = reader["RegistDate"].ToString();
                var    redis      = RedisHelper.GetRedisHelper();

                error = new ErrorRootobject
                {
                    ReturnCode = "0010",
                    msg        = "Token failed to get"
                };
                // serial = JsonConvert.SerializeObject(actoken);//将实体类序列化为JSON字符串
                result = (JObject)JsonConvert.DeserializeObject(serial);//将JSON字符串反序列化为JObject对象
            }
            else
            {
                conn.Close();
                //密码不匹配返回错误原因:
                error            = new ErrorRootobject();
                error.ReturnCode = "0005";
                error.msg        = "Incorrect username or password";

                serial = JsonConvert.SerializeObject(error);             //将实体类序列化   为JSON字符串

                result = (JObject)JsonConvert.DeserializeObject(serial); //将JSON字符串反序列化为JObject对象
            }
            reader.Dispose();                                            //释放资源

            #endregion



            return(result);
        }