コード例 #1
0
        public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            Shop_sys_user user = new Shop_sys_user();

            //获取用户
            try
            {
                if (_redisCacheManager.Get <object>("Redis.sysuser") != null)
                {
                    user = _redisCacheManager.Get <Shop_sys_user>("Redis.sysuser");
                }
                else
                {
                    user = await _userServices.GetSysUserByLoginNameAsync(context.UserName);

                    _redisCacheManager.Set("Redis.sysuser", user, TimeSpan.FromHours(10));
                }
            }
            catch (Exception e)
            {
                _redisCacheManager.Set("Redis.sysuser", user, TimeSpan.FromHours(10));
            }
            if (user != null)
            {
                if (user.uStatus == 0)
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "您已被禁止登陆,请与工作人员联系!");
                    return;
                }
                var _pass       = $"{context.Password}{user.passkey}";
                var _md5passkey = MD5Helper.MD5Encrypt32(_pass);
                if (_md5passkey.Equals(user.passValue))
                {
                    context.Result = new GrantValidationResult(
                        subject: context.UserName,
                        authenticationMethod: "custom",
                        claims: new Claim[]
                    {
                        new Claim("uid", user.uid + ""),
                        new Claim(JwtClaimTypes.Name, user.loginName),
                        new Claim(JwtClaimTypes.GivenName, user.realName),
                        new Claim(JwtClaimTypes.FamilyName, user.nickName),
                        new Claim(JwtClaimTypes.Email, string.IsNullOrWhiteSpace(user.Email)?"":user.Email),
                        new Claim(JwtClaimTypes.Role, "user")
                    });
                    return;
                }
                else
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "密码不正确!");
                    return;
                }
            }
            else
            {
                //验证失败
                context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "不存在该用户名!");
                return;
            }
        }
コード例 #2
0
        public async Task <JsonResult <bool> > RegisterShopMall([FromBody] RegisterParameterModel obj)
        {
            var result = new JsonResult <bool>()
            {
                ret     = 0,
                Success = true
            };

            #region 参数校验
            if (string.IsNullOrWhiteSpace(obj.loginName) || string.IsNullOrWhiteSpace(obj.code) || string.IsNullOrWhiteSpace(obj.passWord) || string.IsNullOrWhiteSpace(obj.repass))
            {
                result.ret     = 1;
                result.Result  = "请填写完整信息!";
                result.Content = false;
                return(result);
            }
            if (obj.loginName.Length >= 20)
            {
                result.ret     = 1;
                result.Result  = "用户名太长!";
                result.Content = false;
                return(result);
            }
            if (!obj.passWord.Equals(obj.repass) && obj.repass.Length >= 20)
            {
                result.ret     = 1;
                result.Result  = "输入的密码不一致,或密码过长!";
                result.Content = false;
                return(result);
            }
            #endregion

            var isAny = await _userServices.IsAny(t => t.loginName == obj.loginName);

            if (isAny)
            {
                result.ret     = 1;
                result.Result  = "已存在该用户名!";
                result.Content = false;
                return(result);
            }
            var codeAny = await _CodeServices.QueryByLately(t => t.code == obj.code && t.codeType == 1 && t.state == 0);

            if (codeAny == null || !Utils.CompanyDate(codeAny.creatTime.AddMinutes(codeAny.effectMinutes), DateTime.Now).Equals(">"))
            {
                result.ret     = 1;
                result.Result  = "验证码不存在或已失效!";
                result.Content = false;
                return(result);
            }

            var           passkey   = RandomHelper.GetRandomString(6, true, true, true, true, "");
            var           passvalue = MD5Helper.MD5Encrypt32($"{obj.repass}{passkey}");
            Shop_sys_user _user     = new Shop_sys_user()
            {
                birthday     = DateTime.Now,
                creatTime    = DateTime.Now,
                Email        = obj.loginName,
                LastLogin    = DateTime.Now,
                loginName    = obj.loginName,
                headPortrait = "",
                LoginNum     = 0,
                Mobile       = "",
                nickName     = obj.loginName,
                passkey      = passkey,
                passValue    = passvalue,
                qq_code      = "",
                realName     = obj.loginName,
                regRemarks   = "",
                sex          = 1,
                uStatus      = 1,
                wx_openid    = "",
            };
            var uid = await _userServices.Add(_user);

            if (uid != 0)
            {
                //插入
                await _User_LogServices.AddUserLogAsync(uid, 2, $"{obj.loginName}注册用户", obj.source, true);

                await _CodeServices.updateCodeStatus(obj.code, codeAny.toName);

                result.ret     = 0;
                result.Result  = "注册成功!";
                result.Content = true;
            }
            else
            {
                result.ret     = 3;
                result.Result  = "系统繁忙,稍后再试!";
                result.Content = false;
            }
            return(result);
        }