Exemplo n.º 1
0
        public async Task <IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice,
                                                    string clientVersion, string registKey = "")
        {
            var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion);

            return(Json(result.ToApiResult()));
        }
Exemplo n.º 2
0
        public void AddOrUpdate(int accountId, string deviceId)
        {
            using (var ctx = _ctx ?? new AyerLechonContext())
            {
                var loginDevice = ctx.LoginDevices.FirstOrDefault(a => a.DeviceId == deviceId && a.CustomerID == accountId);
                var account     = ctx.Customers.FirstOrDefault(a => a.CustomerID == accountId);
                ctx.Customers.Attach(account);
                account.LastLogin = DateTimeOffset.Now.ToEpochTime();

                if (loginDevice != null)
                {
                    ctx.LoginDevices.Attach(loginDevice);
                    loginDevice.LastLoginDate = DateTimeOffset.Now.ToEpochTime();
                }
                else
                {
                    loginDevice = new LoginDevice()
                    {
                        CustomerID    = accountId,
                        CreateDate    = DateTimeOffset.Now.ToEpochTime(),
                        DeviceId      = deviceId,
                        LastLoginDate = DateTimeOffset.Now.ToEpochTime()
                    };
                    ctx.LoginDevices.Add(loginDevice);
                }
            }
        }
Exemplo n.º 3
0
        public async Task <IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion)
        {
            var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId);

            if (user == null)
            {
                return(Json(new ApiResult(OperationResultType.QueryNull, "用户不存在")));
            }
            if (user.SysUser.IsLocked)
            {
                return(Json(new ApiResult(OperationResultType.NoChanged, "用户已被冻结,请联系客服。")));
            }

            if (loginDevice == LoginDevice.Android && clientVersion != ConfigurationManager.AppSettings["ApkVision"])
            {
                return(Json(new ApiResult(OperationResultType.ValidError, "有新版本,请更新。")));
            }
            if (loginDevice == LoginDevice.Ios && clientVersion != ConfigurationManager.AppSettings["IpaVision"])
            {
                return(Json(new ApiResult(OperationResultType.ValidError, "有新版本,请更新。")));
            }

            var result = await UserContract.ResetToken(user, loginDevice, clientVersion);

            return(Json(result.ToApiResult()));
        }
        public async Task RegisterDeviceLoginAsync(string userId, string userAgentString)
        {
            var deviceInfo = _deviceDetector.GetDeviceInfo(userAgentString);

            var device = _dbContext.Set <LoginDevice>().SingleOrDefault(d => d.UserAgent == deviceInfo.UserAgent);

            if (device == null)
            {
                device = new LoginDevice
                {
                    Browser         = deviceInfo.Browser,
                    Id              = Guid.NewGuid().ToString(),
                    MobileDevice    = deviceInfo.MobileDevice,
                    OperatingSystem = deviceInfo.OperatingSystem,
                    UserAgent       = deviceInfo.UserAgent
                };
                _dbContext.Set <LoginDevice>().Add(device);
            }
            var userDevice = _dbContext.Set <UserLoginDevice>().SingleOrDefault(d => d.UserId == userId && d.DeviceId == device.Id);

            if (userDevice == null)
            {
                userDevice = new UserLoginDevice
                {
                    DeviceId            = device.Id,
                    RegistrationTimeUtc = DateTime.UtcNow,
                    UserId = userId
                };
                _dbContext.Add(userDevice);
            }
            userDevice.LastLoginTimeUtc = DateTime.UtcNow;
            await _dbContext.SaveChangesAsync();
        }
Exemplo n.º 5
0
        public async Task<IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion)
        {
            var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId);
            if (user == null) return Json(new ApiResult("用户不存在", OperationResultType.QueryNull));

            var result = await UserContract.ResetToken(user, loginDevice, clientVersion);
            return Json(result.ToApiResult());
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice,
                                                    string clientVersion, string registKey = "")
        {
            var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion);

            //if (result.ResultType == OperationResultType.Success)
            //{
            //    OnlineUserStore.ResetLastOperationTime(phoneNo);
            //}

            return(Json(result.ToApiResult()));
        }
Exemplo n.º 7
0
        public async Task<IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice,
            string clientVersion, string registKey = "")
        {
            var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion);

            //if (result.ResultType == OperationResultType.Success)
            //{
            //    OnlineUserStore.ResetLastOperationTime(phoneNo);
            //}

            return Json(result.ToApiResult());
        }
Exemplo n.º 8
0
        public async Task <IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion)
        {
            var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId);

            if (user == null)
            {
                return(Json(new ApiResult("用户不存在", OperationResultType.QueryNull)));
            }

            var result = await UserContract.ResetToken(user, loginDevice, clientVersion);

            return(Json(result.ToApiResult()));
        }
Exemplo n.º 9
0
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var verifiedAccessToken = await VerifyExternalAccessToken(model.ExternalAccessToken);

            if (verifiedAccessToken == null)
            {
                return(BadRequest("Invalid Provider or External Access Token"));
            }
            using (var context = new AyerLechonContext())
            {
                var customer = context.Customers.Include("LoginDevices").FirstOrDefault(a => a.Email == model.Email);
                if (customer == null)
                {
                    customer = new Customer()
                    {
                        Email     = model.Email,
                        FirstName = model.FirstName,
                        LastName  = model.LastName,
                        VIP       = false
                    };
                }
                var device = context.LoginDevices.FirstOrDefault(a => a.DeviceId == model.DeviceId);
                if (device != null)
                {
                    context.LoginDevices.Remove(device);
                }
                var newdevice = new LoginDevice()
                {
                    DeviceId      = model.DeviceId,
                    CreateDate    = DateTime.Now.ToEpochTime(),
                    FbAccountId   = verifiedAccessToken.user_id,
                    LastLoginDate = DateTime.Now.ToEpochTime(),
                };
                customer.LoginDevices.Add(newdevice);
                context.SaveChanges();

                var accessTokenResponse = GenerateLocalAccessTokenResponse(customer);

                return(Ok(accessTokenResponse));
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 重置用户Token有效期
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task <OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion)
        {
            Operator oper = new Operator()
            {
                UserId         = user.Id.ToString(),
                UserName       = user.SysUser.UserName,
                LoginDevice    = loginDevice,
                PhoneNo        = user.SysUser.PhoneNumber,
                ClientVersion  = clientVersion,
                ValidatePeriod = DateTime.Now.AddDays(30),//默认30天有效期
                UserDatas      = new Dictionary <string, object>()
            };
            string strAuth = oper.ToJsonString();

            user.Token = DesHelper.Encrypt(strAuth, OSharp.Core.Constants.BodeAuthDesKey);

            await UserInfoRepo.UpdateAsync(user);

            return(new OperationResult(OperationResultType.Success, "重置成功", user.Token));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 重置用户Token有效期
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task <OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion)
        {
            Operator oper = new Operator()
            {
                UserId         = user.Id.ToString(),
                UserName       = user.SysUser.UserName,
                LoginDevice    = loginDevice,
                PhoneNo        = user.SysUser.PhoneNumber,
                ClientVersion  = clientVersion,
                ValidatePeriod = DateTime.Now.AddDays(30)//默认30天有效期
            };
            string authDesKey = "bodeauth";
            string strAuth    = oper.ToJsonString();

            user.Token = DesHelper.Encrypt(strAuth, authDesKey);

            await UserInfoRepo.UpdateAsync(user);

            return(new OperationResult(OperationResultType.Success, "重置成功"));
        }
Exemplo n.º 12
0
        public async Task <OperationResult> Login(string phoneNo, string code, LoginDevice loginDevice)
        {
            phoneNo.CheckNotNullOrEmpty("phoneNo");
            code.CheckNotNullOrEmpty("code");

            SysUser sUser     = UserManager.FindByName(phoneNo);
            var     severCode = GetValidateCode(phoneNo, CodeType.动态登录);

            if (sUser == null || sUser.UserType != UserType.App用户)
            {
                return(BodeResult.QueryNull("用户不存在"));
            }
            else if (sUser.IsLocked)
            {
                return(BodeResult.ValidError("用户已经被冻结,请联系客户."));
            }
            else if (severCode == null || severCode.Code != code)
            {
                return(BodeResult.ValidError("验证码错误."));
            }
            return(await Login(phoneNo, "null", loginDevice, "1.0.0"));
        }
Exemplo n.º 13
0
        /// <summary>
        /// 三方登录
        /// </summary>
        /// <param name="thirdKey">三方key</param>
        /// <param name="thirdProvider">微博?QQ?微信?</param>
        /// <param name="loginDevice">登录设备 IOS?Android?</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <param name="registKey">极光推送Key</param>
        /// <returns></returns>
        public async Task <OperationResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "")
        {
            var thirdUser = SysUserLoginRepo.Entities.SingleOrDefault(m => m.ProviderKey == thirdKey && m.ThridProvider == thirdProvider);

            if (thirdUser == null)
            {
                var     userName = "******" + DateTime.Now.ToString("yyyyMMddhhffff");
                SysUser sUser    = new SysUser()
                {
                    UserName = userName,
                    NickName = userName,
                    UserType = UserType.App用户,
                };
                UserInfoRepo.UnitOfWork.TransactionEnabled = true;
                await UserManager.CreateAsync(sUser);

                var userInfo = new UserInfo()
                {
                    SysUser   = sUser,
                    IsDeleted = false,
                    Sex       = Sex.限,
                };
                await UserInfoRepo.InsertAsync(userInfo);

                thirdUser = new SysUserLogin()
                {
                    ProviderKey   = thirdKey,
                    ThridProvider = thirdProvider,
                    User          = sUser,
                };
                await SysUserLoginRepo.InsertAsync(thirdUser);

                await UserInfoRepo.UnitOfWork.SaveChangesAsync();
            }

            var theUser = UserInfoRepo.Entities.SingleOrDefault(m => m.SysUser.Id == thirdUser.User.Id);

            if (theUser.RegistKey != registKey)
            {
                theUser.RegistKey = registKey;
                await UserInfoRepo.UpdateAsync(theUser);
            }

            //变更登录信息
            await ResetToken(theUser, loginDevice, clientVersion);

            var loginInfo = new UserTokenDto()
            {
                Id       = theUser.Id,
                NickName = theUser.SysUser.NickName,
                HeadPic  = theUser.HeadPic,
                Sex      = theUser.Sex,
                Token    = theUser.Token
            };

            return(CdkxResult.Success(loginInfo));
        }
Exemplo n.º 14
0
        public async Task <IHttpActionResult> LoginByCode(string phoneNo, string code, LoginDevice loginDevice)
        {
            var result = await UserContract.Login(phoneNo, code, loginDevice);

            return(Json(result.ToApiResult()));
        }
Exemplo n.º 15
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion)
        {
            userName.CheckNotNullOrEmpty("userName");
            password.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(userName);

            var result = await UserManager.CheckPasswordAsync(sUser, password);

            if (sUser == null || sUser.UserType != UserType.App用户)
            {
                return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null));
            }
            else if (sUser.IsLocked)
            {
                return(new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null));
            }
            else if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null));
            }
            else
            {
                return(await Login(userName, registKey, loginDevice, clientVersion));
            }
        }
Exemplo n.º 16
0
 public DarkLoginSession(LoginDevice loginDevice)
 {
     Clear();
     LoginDevice = loginDevice;
 }
Exemplo n.º 17
0
        /// <summary>
        /// 重置用户Token有效期
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task<OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice,string clientVersion)
        {
            Operator oper = new Operator()
            {
                UserId = user.Id.ToString(),
                UserName = user.SysUser.UserName,
                LoginDevice = loginDevice,
                PhoneNo = user.SysUser.PhoneNumber,
                ClientVersion = clientVersion,
                ValidatePeriod = DateTime.Now.AddDays(30),//默认30天有效期
                UserDatas = new Dictionary<string, object>()
            };
            string strAuth = oper.ToJsonString();
            user.Token = DesHelper.Encrypt(strAuth, OSharp.Core.Constants.BodeAuthDesKey);

            await UserInfoRepo.UpdateAsync(user);
            return new OperationResult(OperationResultType.Success, "重置成功", user.Token);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task<OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice,string clientVersion)
        {
            userName.CheckNotNullOrEmpty("userName");
            password.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(userName);
            var result = await UserManager.CheckPasswordAsync(sUser, password);
            if (sUser == null || sUser.UserType != UserType.App用户)
            {
                return new OperationResult(OperationResultType.QueryNull, "用户不存在", null);
            }
            else if (sUser.IsLocked)
            {
                return new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null);
            }
            else if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null);
            }
            else
            {
                //更新最后一次登录的RegistKey
                var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName);
                if (theUser == null)
                {
                    return new OperationResult(OperationResultType.ValidError, "数据错误", null);
                }

                if (theUser.RegistKey != registKey)
                {
                    theUser.RegistKey = registKey;
                    await UserInfoRepo.UpdateAsync(theUser);
                }

                //变更登录信息
                await ResetToken(theUser, loginDevice, clientVersion);

                var loginInfo = new UserTokenDto()
                {
                    Id = theUser.Id,
                    NickName = theUser.SysUser.NickName,
                    HeadPic = theUser.HeadPic,
                    Sex = theUser.Sex,
                    Token = theUser.Token
                };
                return new OperationResult(OperationResultType.Success, "登录成功", loginInfo);
            }
        }
Exemplo n.º 19
0
        public async Task <ActionResult> Login(FormCollection values, string loginPhone, string loginPassword, int type, LoginDevice loginDevice, string clientVersion = "1.0.0", string registKey = "")
        {
            if (ModelState.IsValid)
            {
                var result = await UserContract.Login(loginPhone, loginPassword, registKey, loginDevice, clientVersion, type);

                if (!result.Successed)
                {
                    return(Json(result.ToApiResult()));
                }
                else
                {
                    var userId     = (result.Data as UserTokenDto).Id;
                    var userString = UserContract.UserInfos.SingleOrDefault(m => m.Id == userId).SysUser.ToJsonString();
                    FormsAuthentication.SetAuthCookie(userString, false);
                }
                return(Json(result.ToApiResult()));
            }
            return(Json(new { ReturnCode = 2, ReturnMsg = "图片验证码有误" }));
        }
Exemplo n.º 20
0
        public async Task <IHttpActionResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "")
        {
            var result = await UserContract.LoginByThird(thirdKey, thirdProvider, loginDevice, clientVersion, registKey);

            return(Json(result.ToApiResult()));
        }
Exemplo n.º 21
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="phoneNo">手机号</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task <OperationResult> Login(string phoneNo, string password, string registKey, LoginDevice loginDevice, string clientVersion)
        {
            phoneNo.CheckNotNullOrEmpty("phoneNo");
            phoneNo.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(phoneNo);

            var result = await UserManager.CheckPasswordAsync(sUser, password);

            if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null));
            }
            else
            {
                //更新最后一次登录的RegistKey
                var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.PhoneNumber == phoneNo);

                if (theUser.RegistKey != registKey)
                {
                    theUser.RegistKey = registKey;
                    await UserInfoRepo.UpdateAsync(theUser);
                }

                //变更登录信息
                await ResetToken(theUser, loginDevice, clientVersion);

                var loginInfo = new UserTokenDto()
                {
                    Id       = theUser.Id,
                    NickName = theUser.SysUser.NickName,
                    HeadPic  = theUser.HeadPic,
                    Token    = theUser.Token
                };
                return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo));
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion)
        {
            userName.CheckNotNullOrEmpty("userName");
            password.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(userName);

            var result = await UserManager.CheckPasswordAsync(sUser, password);

            if (sUser == null || sUser.UserType != UserType.App用户)
            {
                return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null));
            }
            else if (sUser.IsLocked)
            {
                return(new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null));
            }
            else if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null));
            }
            else
            {
                //更新最后一次登录的RegistKey
                var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName);

                if (theUser == null)
                {
                    return(new OperationResult(OperationResultType.ValidError, "数据错误", null));
                }

                if (theUser.RegistKey != registKey)
                {
                    theUser.RegistKey = registKey;
                    await UserInfoRepo.UpdateAsync(theUser);
                }

                //变更登录信息
                await ResetToken(theUser, loginDevice, clientVersion);

                var loginInfo = new UserTokenDto()
                {
                    Id       = theUser.Id,
                    NickName = theUser.SysUser.NickName,
                    HeadPic  = theUser.HeadPic,
                    Sex      = theUser.Sex,
                    Token    = theUser.Token
                };
                return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo));
            }
        }
Exemplo n.º 23
0
        private async Task <OperationResult> Login(string userName, string registKey, LoginDevice loginDevice, string clientVersion)
        {
            //更新最后一次登录的RegistKey
            var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName);

            if (theUser == null)
            {
                return(new OperationResult(OperationResultType.ValidError, "数据错误", null));
            }

            if (theUser.RegistKey != registKey)
            {
                theUser.RegistKey = registKey;
                await UserInfoRepo.UpdateAsync(theUser);
            }

            //变更登录信息
            await ResetToken(theUser, loginDevice, clientVersion);

            var loginInfo = new UserTokenDto()
            {
                Id       = theUser.Id,
                NickName = theUser.SysUser.NickName,
                HeadPic  = theUser.HeadPic,
                Sex      = theUser.Sex,
                Token    = theUser.Token
            };

            return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo));
        }
Exemplo n.º 24
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <param name="type">登录方式</param>
        /// <returns></returns>
        public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion, int type)
        {
            userName.CheckNotNullOrEmpty("userName");
            password.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(userName);

            if (sUser == null)
            {
                return(new OperationResult(OperationResultType.ValidError, "用户不存在", 0));
            }
            if (sUser.IsLocked)
            {
                return(new OperationResult(OperationResultType.ValidError, "您的账号已被冻结,请联系客服", 0));
            }
            if (type == 2)
            {
                //验证码
                var severCode = GetValidateCode(userName, CodeType.临时密码);
                if (severCode == null || severCode.Code != password)
                {
                    return(new OperationResult(OperationResultType.ValidError, "临时密码错误", 0));
                }
            }
            else
            {
                if (!await UserManager.CheckPasswordAsync(sUser, password))
                {
                    return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null));
                }
            }
            if (sUser.UserType != UserType.App用户)
            {
                return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null));
            }
            //更新最后一次登录的RegistKey
            var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName);

            if (theUser.RegistKey != registKey)
            {
                theUser.RegistKey = registKey;
                await UserInfoRepo.UpdateAsync(theUser);
            }

            //变更登录信息
            await ResetToken(theUser, loginDevice, clientVersion);

            var loginInfo = new UserTokenDto()
            {
                Id       = theUser.Id,
                NickName = theUser.SysUser.NickName,
                HeadPic  = theUser.HeadPic,
                Sex      = theUser.Sex,
                PhoneNo  = theUser.SysUser.PhoneNumber,
                Token    = theUser.Token
            };

            //return new OperationResult(OperationResultType.Success, "登录成功", sUser);
            return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo));
        }
Exemplo n.º 25
0
        /// <summary>
        /// 重置用户Token有效期
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task<OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion)
        {
            Operator oper = new Operator()
            {
                UserId = user.Id.ToString(),
                UserName = user.SysUser.UserName,
                LoginDevice = loginDevice,
                PhoneNo = user.SysUser.PhoneNumber,
                ClientVersion = clientVersion,
                ValidatePeriod = DateTime.Now.AddDays(30)//默认30天有效期
            };
            string authDesKey = "bodeauth";
            string strAuth = oper.ToJsonString();
            user.Token = DesHelper.Encrypt(strAuth, authDesKey);

            await UserInfoRepo.UpdateAsync(user);
            return new OperationResult(OperationResultType.Success, "重置成功");
        }
Exemplo n.º 26
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="phoneNo">手机号</param>
        /// <param name="password">密码</param>
        /// <param name="registKey">极光registKey</param>
        /// <param name="loginDevice">登录设备</param>
        /// <param name="clientVersion">客户端版本</param>
        /// <returns></returns>
        public async Task<OperationResult> Login(string phoneNo, string password, string registKey, LoginDevice loginDevice, string clientVersion)
        {
            phoneNo.CheckNotNullOrEmpty("phoneNo");
            phoneNo.CheckNotNullOrEmpty("password");

            SysUser sUser = await UserManager.FindByNameAsync(phoneNo);
            var result = await UserManager.CheckPasswordAsync(sUser, password);

            if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null);
            }
            else
            {
                //更新最后一次登录的RegistKey
                var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.PhoneNumber == phoneNo);
                if (theUser.RegistKey != registKey)
                {
                    theUser.RegistKey = registKey;
                    await UserInfoRepo.UpdateAsync(theUser);
                }

                //变更登录信息
                await ResetToken(theUser, loginDevice, clientVersion);

                var loginInfo = new UserTokenDto()
                {
                    Id = theUser.Id,
                    NickName = theUser.SysUser.NickName,
                    HeadPic = theUser.HeadPic,
                    Token = theUser.Token
                };
                return new OperationResult(OperationResultType.Success, "登录成功", loginInfo);
            }
        }
Exemplo n.º 27
0
        public async Task <IHttpActionResult> ValidateRegister(string phoneNo, string password, string validateCode, LoginDevice loginDevice, string clientVersion, string email, string registKey = "")
        {
            var dto = new UserInfoRegistDto()
            {
                UserName = phoneNo,
                Password = password,
                NickName = "xbxd" + phoneNo,
                Email    = email,
            };
            var result = await UserContract.ValidateRegister(dto, validateCode);

            if (result.Successed)
            {
                return(Json((await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion, 1)).ToApiResult()));
            }
            return(Json(result.ToApiResult()));
        }