public async Task ValidateAsync(ExtensionGrantValidationContext context)
        {
            var phone = context.Request.Raw["phone"];
            var code  = context.Request.Raw["auth_code"];
            var errorValidationResult = new GrantValidationResult(TokenRequestErrors.InvalidGrant);

            if (string.IsNullOrWhiteSpace(phone) || string.IsNullOrWhiteSpace(code))
            {
                context.Result = errorValidationResult;
                return;
            }

            //检查验证码
            if (!_authCodeService.Validate(phone, code))
            {
                context.Result = errorValidationResult;
                return;
            }

            var userId = _userServices.CheckOrCreate(phone);

            if (userId <= 0)
            {
                context.Result = errorValidationResult;
                return;
            }
            context.Result = new GrantValidationResult(userId.ToString(), GrantType);
        }
Beispiel #2
0
        public async Task ValidateAsync(ExtensionGrantValidationContext context)
        {
            string phone = context.Request.Raw["Phone"];
            string pwd   = context.Request.Raw["PassWord"];
            string code  = context.Request.Raw["AuthCode"];
            var    errorValidationResult = new GrantValidationResult(TokenRequestErrors.InvalidGrant);

            if (string.IsNullOrWhiteSpace(phone) || string.IsNullOrWhiteSpace(code) || string.IsNullOrWhiteSpace(pwd))
            {
                context.Result = errorValidationResult;
                return;
            }

            Regex Reg_phone = new Regex(@"^((13[0-9])|(14[5|7])|(15([0-9]))|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$");

            if (!Reg_phone.IsMatch(phone))
            {
                context.Result = errorValidationResult;
                return;
            }

            if (!_authcodeServices.Validate(phone, code))
            {
                context.Result = errorValidationResult;
                return;
            }
            var userInfo = await _userServices.CreateOrCheck(new Models.Users.UserInfo {
                UserName = phone, UserPassword = pwd, Phone = phone
            });

            if (userInfo == null)
            {
                context.Result = errorValidationResult;
                return;
            }

            Claim[] claims = new Claim[]
            {
                new Claim("name", userInfo.Name ?? string.Empty),
                new Claim("title", userInfo.Title ?? string.Empty),
                new Claim("company", userInfo.Company ?? string.Empty),
                new Claim("avatar", userInfo.Avatar ?? string.Empty),
            };

            context.Result = new GrantValidationResult(userInfo.UserId.ToString(), GrantType, claims);
        }