public void OnActionExecuting(ActionExecutingContext context) { //验证对象 foreach (var item in context.ActionArguments.Values) { if (item is IVaptchaToken) { IVaptchaToken token = item as IVaptchaToken; var result = Core.Captcha.Validate(context.HttpContext.Request.HttpContext.Connection.RemoteIpAddress.ToString(), token); if (!result.GetAwaiter().GetResult()) { context.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new Models.JsonModel() { status = 0, msg = "人机验证失败!" }); } } } }
public async static Task <bool> Validate(string ip, IVaptchaToken token) { try { var v = new Dictionary <string, string> { { "id", "5c4aae6bfc650e1254614ec6" }, { "secretkey", "3e954a709e8d4151a3a14b3070126fdc" }, { "scene", token.scene }, { "token", token.vaptcha_token }, { "ip", ip } }; var message = (await httpClient.PostAsync("http://api.vaptcha.com/v2/validate", new FormUrlEncodedContent(v))); var result = Newtonsoft.Json.JsonConvert.DeserializeObject <VaptchaResult>(await message.Content.ReadAsStringAsync()); // return(result.success == 1); } catch (Exception ex) { return(false); } }