Exemplo n.º 1
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="user"></param>
        /// <param name="password"></param>
        /// <param name="imei"></param>
        /// <returns></returns>
        public static int LoginByDevice(string user, string password, string imei)
        {
            if (!SnsCenterUser.CheckDevice(imei))
            {
                throw (new Exception("禁止登录"));
            }
            int userId        = 0;
            var snsCenterUser = new SnsCenterUser(user, password, imei);
            var snsUser       = snsCenterUser.GetUserInfo(user);

            if (snsUser == null || snsUser.UserId <= 0)
            {
                userId = snsCenterUser.InsertSnsUser();
                SnsCenterUser.AddLoginLog(imei, user);

                //过期移除
                PassportExpired passportExpired;
                imeiMap.TryRemove(imei, out passportExpired);
                return(userId);
            }
            if (snsCenterUser.ValidatePassport(snsUser))
            {
                return(snsUser.UserId);
            }
            SnsCenterUser.AddLoginLog(imei, user);
            return(userId);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="user"></param>
        /// <param name="password"></param>
        /// <param name="imei"></param>
        /// <param name="userType"></param>
        /// <param name="isCustom">use custom passport</param>
        /// <returns></returns>
        public static long LoginByDevice(string user, string password, string imei, out RegType userType, bool isCustom = false)
        {
            if (!SnsCenterUser.CheckDevice(imei))
            {
                throw (new Exception("禁止登录"));
            }
            long userId = 0;

            try
            {
                var snsCenterUser = new SnsCenterUser(user, password, imei);
                var snsUser       = snsCenterUser.GetUserInfo(user);
                if (snsUser == null || snsUser.UserId <= 0)
                {
                    Guid gid;
                    userType = Guid.TryParse(password, out gid) ? RegType.Guest : RegType.Normal;
                    snsCenterUser.RegType = userType;
                    userId = snsCenterUser.InsertSnsUser(isCustom);
                    //过期移除
                    PassportExpired passportExpired;
                    bool            result = string.IsNullOrEmpty(imei) ? imeiMap.TryRemove(user, out passportExpired) : imeiMap.TryRemove(imei, out passportExpired);
                    return(userId);
                }
                userType = snsUser.RegType;
                if (snsCenterUser.ValidatePassport(snsUser))
                {
                    return(snsUser.UserId);
                }
            }
            finally
            {
                SnsCenterUser.AddLoginLog(imei, user);
            }
            return(userId);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取通行证
        /// </summary>
        /// <param name="imei">if null then get new pid</param>
        /// <returns></returns>
        public static string[] GetRegPassport(string imei)
        {
            if (!SnsCenterUser.CheckDevice(imei))
            {
                throw (new Exception("禁止登入"));
            }
            var           list       = new List <string>();
            SnsCenterUser user       = SnsCenterUser.GetUserByDeviceId(imei);
            string        passportId = string.Empty;

            if (user != null)
            {
                passportId = user.PassportId;
                list.Add(passportId);
                list.Add(user.Password);
            }
            else
            {
                SnsPassport     passport = new SnsPassport();
                PassportExpired passportExpired;
                if (!imeiMap.TryGetValue(imei, out passportExpired))
                {
                    passportId    = passport.GetRegPassport();
                    imeiMap[imei] = new PassportExpired(passportId);
                }
                else
                {
                    passportId = passportExpired.Pid;
                    if (passportExpired.ExpiredTime < DateTime.Now)
                    {
                        //过期移除
                        imeiMap.TryRemove(imei, out passportExpired);
                    }
                    //检查超出
                    List <string> expiredMap;
                    if (imeiMap.Count > 100 && ((expiredMap = imeiMap.Where(t => t.Value.ExpiredTime < DateTime.Now).Select(t => t.Key).ToList()).Count > 10))
                    {
                        foreach (var expired in expiredMap)
                        {
                            imeiMap.TryRemove(expired, out passportExpired);
                        }
                    }
                }

                string password = passport.GetRandomPwd();
                list.Add(passportId);
                list.Add(password);
            }

            return(list.ToArray());
        }
Exemplo n.º 4
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="user"></param>
        /// <param name="password"></param>
        /// <param name="deviceID"></param>
        /// <returns></returns>
        public static int LoginByDevice(string user, string password, string deviceID)
        {
            if (!SnsCenterUser.CheckDevice(deviceID))
            {
                throw (new Exception("禁止登录"));
            }
            SnsCenterUser snsCenterUser = new SnsCenterUser(user, password, deviceID);
            int           userID        = snsCenterUser.GetUserId();

            if (userID == 0 && !snsCenterUser.IsExist())
            {
                userID = snsCenterUser.InsertSnsUser();
            }
            SnsCenterUser.AddLoginLog(deviceID, user);
            return(userID);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 获取通行证
        /// </summary>
        /// <param name="imei">if null then get new pid</param>
        /// <returns></returns>
        public static string[] GetRegPassport(string imei)
        {
            if (!SnsCenterUser.CheckDevice(imei))
            {
                throw (new Exception("禁止登入"));
            }
            var           list = new List <string>();
            SnsCenterUser user = SnsCenterUser.GetUserByDeviceId(imei);

            if (user != null)
            {
                list.Add(user.PassportId);
                list.Add(user.Password);
            }
            else
            {
                SnsPassport passport = new SnsPassport();
                string      password = passport.GetRandomPwd();
                list.Add(passport.GetRegPassport());
                list.Add(password);
            }

            return(list.ToArray());
        }
Exemplo n.º 6
0
        /// <summary>
        /// 获取通行证
        /// </summary>
        /// <param name="deviceID"></param>
        /// <returns></returns>
        public static string[] GetRegPassport(string deviceID)
        {
            if (!SnsCenterUser.CheckDevice(deviceID))
            {
                throw (new Exception("禁止登入"));
            }
            List <string> list = new List <string>();
            SnsCenterUser user = SnsCenterUser.GetUserByDeviceID(deviceID);

            if (user != null)
            {
                list.Add(user.PassportId);
                list.Add(user.Password);
            }
            else
            {
                SnsPassport passport = new SnsPassport();
                string      password = passport.GetRandomPwd();
                list.Add(passport.GetRegPassport());
                list.Add(CryptoHelper.DES_Encrypt(password, GameEnvironment.ProductDesEnKey));
            }

            return(list.ToArray());
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获取通行证
        /// </summary>
        /// <param name="imei">if null then get new pid</param>
        /// <param name="isNew"></param>
        /// <param name="encodeFunc"></param>
        /// <returns></returns>
        public static string[] GetRegPassport(string imei, bool isNew = false, Func <string, string> encodeFunc = null)
        {
            if (!SnsCenterUser.CheckDevice(imei))
            {
                throw (new Exception("禁止登入"));
            }
            var     list       = new List <string>();
            SnsUser user       = new SnsCenterUser().GetUserByDeviceId(imei);
            string  passportId = string.Empty;

            if (!isNew && user.UserId > 0)
            {
                passportId = user.PassportId;
                if (user.RegType == RegType.Guest)
                {
                    //客户端换包重新获取游客账号,密码需要重置
                    string password = GetRandomPwd();
                    user.Password = encodeFunc != null?encodeFunc(password) : password;

                    var sns = new SnsCenterUser(user.PassportId, password, imei);
                    sns.ChangePass(user.UserId.ToString(), true);
                }
                else
                {
                    if (encodeFunc != null)
                    {
                        user.Password = encodeFunc(user.Password);
                    }
                }
                list.Add(passportId);
                list.Add(user.Password);
            }
            else
            {
                PassportExpired passportExpired;
                if (isNew || !imeiMap.TryGetValue(imei, out passportExpired))
                {
                    passportId = new SnsPassport().GetRegPassport();
                    if (!string.IsNullOrEmpty(imei))
                    {
                        imeiMap[imei] = new PassportExpired(passportId);
                    }
                }
                else
                {
                    passportId = passportExpired.Pid;
                    if (passportExpired.ExpiredTime < DateTime.Now)
                    {
                        //过期移除
                        imeiMap.TryRemove(imei, out passportExpired);
                    }
                    //检查超出
                    List <string> expiredMap;
                    if (imeiMap.Count > 100 && ((expiredMap = imeiMap.Where(t => t.Value.ExpiredTime < DateTime.Now).Select(t => t.Key).ToList()).Count > 10))
                    {
                        foreach (var expired in expiredMap)
                        {
                            imeiMap.TryRemove(expired, out passportExpired);
                        }
                    }
                }

                string password = GetRandomPwd();
                if (encodeFunc != null)
                {
                    password = encodeFunc(password);
                }
                list.Add(passportId);
                list.Add(password);
            }
            return(list.ToArray());
        }