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); }
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); }