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 = "人机验证失败!"
                        });
                    }
                }
            }
        }
示例#2
0
        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);
            }
        }