Exemplo n.º 1
0
        /// <summary>
        /// 测试推送方法
        /// </summary>
        public void Pushs()
        {
            string cid = "7b0eb9a4a5e5dbae8d3fda5b4c580ab3";
            //var datas = new
            //{
            //    title= "该账号已在其他地方登录"
            //};
            var datass = new
            {
                title = "该账号已在其他地方登录"
            };
            var PenetrateMsg = new
            {
                type = 0,
                data = datass
            };

            Push.IosPushMessageToSingle(JsonConvert.SerializeObject(PenetrateMsg), cid);
        }
Exemplo n.º 2
0
        public JsonResult Login()
        {
            ResultUser    resultUser = new ResultUser();
            UserBLL       ub         = new UserBLL();
            InvitationBLL ib         = new InvitationBLL();

            try
            {
                using (StreamReader sr = new StreamReader(Request.InputStream))
                {
                    string json = sr.ReadToEnd();
                    if (string.IsNullOrEmpty(json))
                    {
                        resultUser.msg = "没有获取到用户名和密码";
                        return(Json(resultUser));
                    }
                    obj = JObject.Parse(json);
                }
                string pw       = obj["password"].ToString();
                string password = MD5Helper.MD5Encrypt32(pw);
                string loginid  = obj["loginid"].ToString();
                Regex  r1       = new Regex(@"^[a-zA-Z0-9_\u4e00-\u9fa5]{4,16}$");
                User   user     = new User();
                if (r1.IsMatch(loginid))
                {
                    user.LoginID = loginid;
                }
                else
                {
                    resultUser.msg = "登录名格式不对";
                    return(Json(resultUser));
                };
                dynamic push     = JsonConvert.DeserializeObject(obj["push"].ToString());
                string  token    = push.token;
                string  clientid = push.clientid;
                if (string.IsNullOrEmpty(token))
                {
                    resultUser.msg = "登录失败";
                    return(Json(resultUser));
                }
                user = ub.GetUser(user);
                if (user == null)
                {
                    resultUser.msg = "该用户不存在";
                    return(Json(resultUser));
                }
                else
                {
                    DateTime time  = DateTime.Now;
                    bool     value = false;
                    if (string.IsNullOrEmpty(user.PassWords))
                    {
                        user.PassWords = MD5Helper.MD5Encrypt32("1111");
                        if (ub.UpdatePassword(user))
                        {
                            value = true;
                        }
                    }
                    var result = redis.StringGet(user.ID.ToString());
                    if (result != null)
                    {
                        string results = result["clientid"].ToString();
                        if (!results.Equals(clientid))
                        {
                            //如果该账户已经登录则通过第三方推送将消息通知给上一个用户
                            var users = ub.GetUserName(user.LoginID);
                            var datas = redis.StringGet(users.ID.ToString());
                            if (datas != null)
                            {
                                string device    = datas["device"].ToString();
                                string clientids = datas["clientid"].ToString();
                                var    datass    = new
                                {
                                    title = "该账号已在其他地方登录"
                                };
                                var PenetrateMsg = new
                                {
                                    type = 0,
                                    data = datass
                                };
                                if ("2".Equals(device))
                                {
                                    Push.IosPushMessageToSingle(JsonConvert.SerializeObject(PenetrateMsg), clientids);
                                }
                                else if ("1".Equals(device))
                                {
                                    Push.IosPushMessageToSingle(JsonConvert.SerializeObject(PenetrateMsg), clientids);
                                }
                                else
                                {
                                    resultUser.msg = "当前登录的是其他设备";
                                    return(Json(resultUser));
                                }
                            }
                        }
                    }
                    if (password.Equals(user.PassWord))
                    {
                        if (value)
                        {
                            resultUser.res   = 205;
                            resultUser.state = 1;
                            resultUser.msg   = "由于您未设置迷惑密码系统帮您设置了迷惑密码为1111";
                            resultUser.data  = JwtHelper.CreateToken(user, time);
                            ub.UpdateUser(user.ID, time);
                            //用redis保存用户登录的信息
                            redis.StringSet(user.LoginID, user);
                        }
                        int res   = CheckAgent();
                        var datas = new
                        {
                            device   = res,
                            token    = token,
                            clientid = clientid
                        };
                        redis.StringSet(user.ID.ToString(), datas);
                        resultUser.res   = 200;
                        resultUser.state = 1;
                        resultUser.msg   = "用户是登录的正常聊天";
                        resultUser.data  = JwtHelper.CreateToken(user, time);
                        ub.UpdateUser(user.ID, time);
                        //用redis保存用户登录的信息
                        redis.StringSet(user.LoginID, user);
                    }
                    else if (password.Equals(user.PassWords))
                    {
                        resultUser.res   = 200;
                        resultUser.state = 2;
                        resultUser.msg   = "用户是登录的私密聊天";
                        ub.EditChatSwitch(user.ID);
                        ub.UpdateUser(user.ID, time);
                        resultUser.data = JwtHelper.CreateToken(user, time);
                    }
                    else
                    {
                        resultUser.res = 500;
                        resultUser.msg = "密码错误,请重新输入";
                    };
                }
            }
            catch (HttpException ex)
            {
                LogHelper.WriteLog(ex.Message.ToString(), ex);
            }
            return(Json(resultUser));
        }