Ejemplo n.º 1
0
        /// <summary>
        /// 发送验证码 - 找回密码
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public async Task <ResponseModel <string> > SendEmailAsync(string email)
        {
            var response = new ResponseModel <string>();

            if (!email.IsEmail())
            {
                return(response.Fail("邮箱格式错误"));
            }

            var key           = $"{CacheKeys.RETRIEVEPWDCAPTCHA}{email}";
            var expireMinutes = 5;

            if (await FrequentlyGetCaptchaAsync(key, expireMinutes, 2))
            {
                return(response.Fail("获取验证码过于频繁,请稍后再获取"));
            }

            if (!await ExistUserAsync(email))
            {
                return(response.Fail("该邮箱尚未注册或无效"));
            }

            var captchaNumber = CaptchaHelper.CreateRandomNumber(6);
            var htmlEmail     = SystemBll.GetMailContent("找回密码", captchaNumber, expireMinutes);
            var result        = await SystemBll.SendSystemMailAsync("LionFrame-找回密码", htmlEmail, email);

            if (result.Contains("发送成功"))
            {
                await RedisClient.SetAsync(key, captchaNumber, new TimeSpan(0, expireMinutes, 0));
            }

            return(response.Succeed("发送成功"));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 得到验证码
        /// </summary>
        /// <param name="emailTo"></param>
        /// <returns></returns>
        public async Task <string> GetRegisterCaptchaAsync(string emailTo)
        {
            if (await ExistUserAsync(emailTo))
            {
                return("该邮箱已存在,请切换或找回密码");
            }
            var key           = $"{CacheKeys.REGISTERCAPTCHA}{emailTo}";
            var expireMinutes = 5;

            if (await FrequentlyGetCaptchaAsync(key, expireMinutes, 2))
            {
                return("获取验证码过于频繁,请稍后再获取");
            }

            var captchaNumber = CaptchaHelper.CreateRandomNumber(6);
            var htmlEmail     = SystemBll.GetMailContent("注册账号", captchaNumber, expireMinutes);
            var result        = await SystemBll.SendSystemMailAsync("LionFrame-注册账号", htmlEmail, emailTo);

            if (result.Contains("发送成功"))
            {
                await RedisClient.SetAsync(key, captchaNumber, new TimeSpan(0, expireMinutes, 0));
            }

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 用户登录 业务层
        /// </summary>
        /// <param name="loginParam"></param>
        /// <returns></returns>
        public async Task <ResponseModel <UserDto> > LoginAsync(LoginParam loginParam)
        {
            var result             = new ResponseModel <UserDto>();
            var verificationResult = await SystemBll.VerificationLoginAsync(loginParam);

            if (verificationResult != "验证通过")
            {
                result.Fail(ResponseCode.LoginFail, verificationResult, null);
                return(result);
            }

            var responseResult = await SysUserDao.LoginAsync(loginParam);

            if (responseResult.Success)
            {
                var userCache = responseResult.Data;
                CreateTokenCache(userCache);
                var userDto = userCache.MapTo <UserDto>();
                result.Succeed(userDto);
            }

            return(result);
        }