Пример #1
0
        /// <summary>
        /// 验证验证码
        /// </summary>
        /// <returns></returns>
        public string Verification()
        {
            GeetestLib geetest = new GeetestLib(publicKey, privateKey);
            Byte       gt_server_status_code = (Byte)Session[GeetestLib.gtServerStatusSessionKey];
            String     userID    = (String)Session["userID"];
            int        result    = 0;
            String     challenge = Request.Form.Get(GeetestLib.fnGeetestChallenge);
            String     validate  = Request.Form.Get(GeetestLib.fnGeetestValidate);
            String     seccode   = Request.Form.Get(GeetestLib.fnGeetestSeccode);

            if (gt_server_status_code == 1)
            {
                result = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
            }
            else
            {
                result = geetest.failbackValidateRequest(challenge, validate, seccode);
            }
            if (result == 1)
            {
                return("ok");
            }
            else
            {
                return("sb");
            }
        }
Пример #2
0
        /// <summary>
        /// 验证验证码是否正确
        /// </summary>
        /// <returns></returns>
        public static bool Validate()
        {
            int result = 0;

            try
            {
                GeetestLib geetest = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
                Byte       gt_server_status_code = (Byte)HttpContext.Current.Session[GeetestLib.gtServerStatusSessionKey];
                string     userID = (string)HttpContext.Current.Session["userID"];

                string challenge = HttpContext.Current.Request[GeetestLib.fnGeetestChallenge];
                string validate  = HttpContext.Current.Request[GeetestLib.fnGeetestValidate];
                string seccode   = HttpContext.Current.Request[GeetestLib.fnGeetestSeccode];
                if (gt_server_status_code == 1)
                {
                    result = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
                }
                else
                {
                    result = geetest.failbackValidateRequest(challenge, validate, seccode);
                }
            }
            catch (Exception)
            {
            }
            return(result == 1);
        }
Пример #3
0
        public ApiResponse Success()
        {
            GeetestLib geetest = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
            Byte       gt_server_status_code = (Byte)Context.Session[GeetestLib.gtServerStatusSessionKey];
            String     userID    = (String)Context.Session["sessionID"];
            int        result    = 0;
            String     challenge = Context.Request.Form.Get(GeetestLib.fnGeetestChallenge);
            String     validate  = Context.Request.Form.Get(GeetestLib.fnGeetestValidate);
            String     seccode   = Context.Request.Form.Get(GeetestLib.fnGeetestSeccode);

            if (gt_server_status_code == 1)
            {
                result = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
            }
            else
            {
                result = geetest.failbackValidateRequest(challenge, validate, seccode);
            }
            if (result == 1)
            {
                return(ResponseHelper.CreateApiResponse(10000, "验证码校验成功"));
            }
            else
            {
                return(ResponseHelper.CreateApiResponse(10001, "验证码校验失败"));
            }
        }
Пример #4
0
        protected void submitBtn_Click(object sender, EventArgs e)
        {
            GeetestLib geetest = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
            Byte       gt_server_status_code = (Byte)Session[GeetestLib.gtServerStatusSessionKey];
            String     userID    = (String)Session["userID"];
            int        result    = 0;
            String     challenge = Request.Form.Get(GeetestLib.fnGeetestChallenge);
            String     validate  = Request.Form.Get(GeetestLib.fnGeetestValidate);
            String     seccode   = Request.Form.Get(GeetestLib.fnGeetestSeccode);

            if (gt_server_status_code == 1)
            {
                result = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
            }
            else
            {
                result = geetest.failbackValidateRequest(challenge, validate, seccode);
            }
            if (result == 1)
            {
                Response.Write("<div id='sb'>success</div>");
            }
            else
            {
                Response.Write(" ");
            }
        }
Пример #5
0
        // 验证初始化接口,GET请求
        public ContentResult FirstRegister()
        {
            /*
             * 必传参数
             *  digestmod 此版本sdk可支持md5、sha256、hmac-sha256,md5之外的算法需特殊配置的账号,联系极验客服
             * 自定义参数,可选择添加
             *  user_id user_id作为客户端用户的唯一标识,确定用户的唯一性;作用于提供进阶数据分析服务,可在register和validate接口传入,不传入也不影响验证服务的使用;若担心用户信息风险,可作预处理(如哈希处理)再提供到极验
             *  client_type 客户端类型,web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生sdk植入app应用的方式;unknown:未知
             *  ip_address 客户端请求sdk服务器的ip地址
             */
            GeetestLib gtLib     = new GeetestLib(GeetestConfig.GEETEST_ID, GeetestConfig.GEETEST_KEY);
            string     userId    = "test";
            string     digestmod = "md5";
            IDictionary <string, string> paramDict = new Dictionary <string, string> {
                { "digestmod", digestmod }, { "user_id", userId }, { "client_type", "web" }, { "ip_address", "127.0.0.1" }
            };
            string           bypass_cache = GetBypassCache();
            GeetestLibResult result;

            if (bypass_cache == "success")
            {
                result = gtLib.Register(digestmod, paramDict);
            }
            else
            {
                result = gtLib.LocalRegister();
            }
            return(Content(result.GetData(), "application/json;charset=UTF-8"));
        }
Пример #6
0
        public static string GeetestCheck(string GeetestId, string geetest_challenge, string geetest_seccode, string geetest_validate)
        {
            string str = string.Empty;

            try
            {
                IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
                timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
                string     GeetestPublicKey  = System.Configuration.ConfigurationManager.AppSettings["GeetestPublicKey"];
                string     GeetestPrivateKey = System.Configuration.ConfigurationManager.AppSettings["GeetestPrivateKey"];
                GeetestLib geetest           = new GeetestLib(GeetestPublicKey, GeetestPrivateKey);
                var        result            = geetest.enhencedValidateRequest(geetest_challenge, geetest_validate, geetest_seccode, GeetestId);

                if (result == 1)
                {
                    str = ResponseHelper.ResponseMsg("1", "极验证成功", "");
                }
                else
                {
                    str = ResponseHelper.ResponseMsg("-1", "极验证失败", "");
                }
            }
            catch (Exception ex)
            {
                str = ResponseHelper.ResponseMsg("-1", ex.Message, "");
            }

            return(str);
        }
Пример #7
0
        // 二次验证接口,POST请求
        public JsonResult SecondValidate()
        {
            GeetestLibResult             result    = null;
            IDictionary <string, string> paramDict = new Dictionary <string, string> {
            };
            GeetestLib gtLib        = new GeetestLib(GeetestConfig.GEETEST_ID, GeetestConfig.GEETEST_KEY);
            string     challenge    = Request.Form[GeetestLib.GEETEST_CHALLENGE];
            string     validate     = Request.Form[GeetestLib.GEETEST_VALIDATE];
            string     seccode      = Request.Form[GeetestLib.GEETEST_SECCODE];
            string     bypass_cache = GetBypassCache();

            if (bypass_cache is null)
            {
                return(Json(new { result = "fail", version = GeetestLib.VERSION, msg = "获取缓存的bypass状态发生异常" }));
            }

            if (bypass_cache == "success")
            {
                result = gtLib.SuccessValidate(challenge, validate, seccode, paramDict);
            }
            else
            {
                result = gtLib.FailValidate(challenge, validate, seccode);
            }

            // 注意,不要更改返回的结构和值类型
            if (result.GetStatus() == 1)
            {
                return(Json(new { result = "success", version = GeetestLib.VERSION }));
            }
            else
            {
                return(Json(new { result = "fail", version = GeetestLib.VERSION, msg = result.GetMsg() }));
            }
        }
Пример #8
0
        // 验证初始化接口,GET请求
        public ContentResult FirstRegister()
        {
            /*
             * 必传参数
             *  digestmod 此版本sdk可支持md5、sha256、hmac-sha256,md5之外的算法需特殊配置的账号,联系极验客服
             * 自定义参数,可选择添加
             *  user_id user_id作为客户端用户的唯一标识,确定用户的唯一性;作用于提供进阶数据分析服务,可在register和validate接口传入,不传入也不影响验证服务的使用;若担心用户信息风险,可作预处理(如哈希处理)再提供到极验
             *  client_type 客户端类型,web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生sdk植入app应用的方式;unknown:未知
             *  ip_address 客户端请求sdk服务器的ip地址
             */
            GeetestLib gtLib     = new GeetestLib(GeetestConfig.GEETEST_ID, GeetestConfig.GEETEST_KEY);
            string     userId    = "test";
            string     digestmod = "md5";
            IDictionary <string, string> paramDict = new Dictionary <string, string> {
                { "digestmod", digestmod }, { "user_id", userId }, { "client_type", "web" }, { "ip_address", "127.0.0.1" }
            };
            GeetestLibResult result = gtLib.Register(digestmod, paramDict);

            // 将结果状态写到session中,此处register接口存入session,后续validate接口会取出使用
            // 注意,此demo应用的session是单机模式,格外注意分布式环境下session的应用
            HttpContext.Session.SetInt32(GeetestLib.GEETEST_SERVER_STATUS_SESSION_KEY, result.GetStatus());
            HttpContext.Session.SetString("userId", userId);
            // 注意,不要更改返回的结构和值类型
            return(Content(result.GetData(), "application/json;charset=UTF-8"));
        }
Пример #9
0
        /// <summary>
        /// 验证码生成
        /// </summary>
        /// <param name="publicKey">验证码ID</param>
        /// <param name="privateKey">验证码KEY</param>
        /// <returns></returns>
        public static string GetCaptcha(string publicKey, string privateKey)
        {
            GeetestLib geetest        = new GeetestLib(publicKey, privateKey);
            string     gtServerStatus = geetest.preProcess("test").ToString();

            new CookieHelper(GeetestLib.gtServerStatusSessionKey, gtServerStatus);
            return(geetest.getResponseStr());
        }
Пример #10
0
        private string GetCaptcha(HttpContext context)
        {
            var geetest        = new GeetestLib("7f8cfbad6525535e637bcb59a20550f8", "ae62d001e558b9dfca3e4c4f40032fcd");
            var gtServerStatus = geetest.preProcess();

            context.Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            return(geetest.getResponseStr());
        }
Пример #11
0
        private string getCaptcha()
        {
            GeetestLib geetestLib = new GeetestLib(SettingsManager.GetMasterSettings().GeetestKey, SettingsManager.GetMasterSettings().GeetestId);
            string     userID     = "mec";
            byte       b          = geetestLib.preProcess(userID);

            HiCache.Insert("gt_server_status", b);
            return(geetestLib.getResponseStr());
        }
Пример #12
0
        /// <summary>
        /// 获取滑动验证码
        /// </summary>
        /// <returns></returns>
        public ActionResult GetCaptcha()
        {
            GeetestLib geetest        = new GeetestLib(publicKey, privateKey);
            string     userID         = "test";
            Byte       gtServerStatus = geetest.preProcess(userID, "web", Request.UserHostAddress);

            Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Session["userID"] = userID;
            return(Content(geetest.getResponseStr()));
        }
Пример #13
0
        public ActionResult GetCaptcha()
        {
            GeetestLib geetest        = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
            string     userID         = RandomUtil.CreateRandomStr(10);
            byte       gtServerStatus = geetest.preProcess(userID, "web", ConfigurationManager.AppSettings["ClientIP"]);

            Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Session["userID"] = userID;
            return(Content(geetest.getResponseStr()));
        }
Пример #14
0
        private String getCaptcha(HttpContext context)
        {
            GeetestLib geetest        = new GeetestLib("48a6ebac4ebc6642d68c217fca33eb4d", "4f1c085290bec5afdc54df73535fc361");
            String     userID         = "test";
            Byte       gtServerStatus = geetest.preProcess(userID, "web", "127.0.0.1");

            context.Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            context.Session["userID"] = userID;
            return(geetest.getResponseStr());
        }
Пример #15
0
        private String getCaptcha()
        {
            GeetestLib geetest        = new GeetestLib("b46d1900d0a894591916ea94ea91bd2c", "36fc3fe98530eea08dfc6ce76e3d24c4");
            String     userID         = "test";
            Byte       gtServerStatus = geetest.preProcess(userID);

            Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Session["userID"] = userID;
            return(geetest.getResponseStr());
        }
        private String getCaptcha()
        {
            GeetestLib geetest        = new GeetestLib(_geetestOptions.Id, _geetestOptions.Key);
            String     userID         = "test";
            Byte       gtServerStatus = geetest.preProcess(userID);

            // Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            // Session["userID"] = userID;
            return(geetest.getResponseStr());
        }
Пример #17
0
        private String getCaptcha()
        {
            GeetestLib geetest        = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
            String     userID         = "test";
            Byte       gtServerStatus = geetest.preProcess(userID);

            Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Session["userID"] = userID;
            return(geetest.getResponseStr());
        }
        public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                GeetestLib geetest = new GeetestLib(_geetestOptions.Id, _geetestOptions.Key);
                //Byte gt_server_status_code = (Byte) Session[GeetestLib.gtServerStatusSessionKey];
                Byte   gt_server_status_code = 1;
                String userID         = "test";
                int    validateResult = 0;
                String challenge      = Request.Form[GeetestLib.fnGeetestChallenge];
                String validate       = Request.Form[GeetestLib.fnGeetestValidate];
                String seccode        = Request.Form[GeetestLib.fnGeetestSeccode];
                if (gt_server_status_code == 1)
                {
                    validateResult = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
                }
                else
                {
                    validateResult = geetest.failbackValidateRequest(challenge, validate, seccode);
                }
                if (validateResult != 1)
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }

                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    _logger.LogInformation(1, "User logged in.");
                    return(RedirectToLocal(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    return(RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning(2, "User account locked out.");
                    return(View("Lockout"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Пример #19
0
        /// <inheritdoc />
        public void CheckCaptcha(string inputCaptcha)
        {
            var requestCookie = HttpContext.Current.Request.Cookies.Get("ClientToken");
            var clientToken   = "";

            if (requestCookie == null)
            {
                throw new UserFriendlyException("您的操作有误,请刷新重试");
            }
            clientToken = requestCookie.Value;
            var verifcationCache = _cacheManager.GetCache("ClientToken").GetOrDefault <string, VerifcationCache>(clientToken);

            switch (verifcationCache?.VerifcationType)
            {
            case VerifcationType.Image:
                if (string.IsNullOrEmpty(inputCaptcha))
                {
                    throw new UserFriendlyException("请输入验证码");
                }
                if (string.IsNullOrEmpty(verifcationCache?.Code))
                {
                    throw new UserFriendlyException("验证码已过期,请刷新重试");
                }
                if (inputCaptcha.ToLower().Trim() != verifcationCache?.Code?.ToLower())
                {
                    throw new UserFriendlyException("验证码输入错误");
                }
                _cacheManager.GetCache("ClientToken").Set(clientToken, "");
                break;

            case VerifcationType.Drag:
            case VerifcationType.Geetest:
                if (string.IsNullOrEmpty(inputCaptcha) ||
                    string.IsNullOrEmpty(verifcationCache?.Code) ||
                    inputCaptcha.ToLower().Trim() != verifcationCache?.Code?.ToLower())
                {
                    throw new UserFriendlyException("验证码验证失败");
                }
                break;

            case VerifcationType.GeetestNow:
                GeetestLib   geetest = GetGeetestLib();
                GeetestCheck input   = JsonConvert.DeserializeObject <GeetestCheck>(inputCaptcha);
                int          result  = geetest.enhencedValidateRequest(input.Challenge, input.Validate, input.Seccode);
                if (result != 1)
                {
                    throw new UserFriendlyException("验证失败");
                }
                break;

            default:
                break;
            }
        }
Пример #20
0
        public ApiResponse GenerateCode()
        {
            Context.Response.ContentType = "application/json";
            GeetestLib geetest        = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
            string     appKey         = System.Guid.NewGuid().ToString();
            Byte       gtServerStatus = geetest.preProcess(appKey);

            Context.Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Context.Session["sessionID"] = appKey;
            return(ResponseHelper.CreateApiResponse(10000, "success", geetest.getResponseStr()));
        }
Пример #21
0
        public ActionResult GetCaptcha()
        {
            var geetest = new GeetestLib(
                ConfigurationManager.AppSettings["CheckCode.GeetestLib.PublicKey"],
                ConfigurationManager.AppSettings["CheckCode.GeetestLib.PrivateKey"]);
            var userCheckCode  = Guid.NewGuid().ToString();
            var gtServerStatus = geetest.preProcess(userCheckCode);

            Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
            Session["userCheckCode"] = userCheckCode;
            return(Content(geetest.getResponseStr()));
        }
Пример #22
0
        public void TestGetCaptcha()
        {
            var config = new ConfigurationBuilder()
                         .AddJsonFile("Configuration.json")
                         .Build();

            GeetestLib geetest        = new GeetestLib(config["GeetestId"], config["GeetestKey"]);
            String     userID         = config["GeetestUserId"];
            Byte       gtServerStatus = geetest.preProcess(userID);

            Assert.Equal(gtServerStatus, (Byte)1);
            Console.WriteLine(geetest.getResponseStr());
        }
Пример #23
0
        private static bool BackValidate(string geetestChallenge, string geetestValidate, string geetestSeccode)
        {
            if (!string.IsNullOrEmpty(geetestChallenge) && !string.IsNullOrEmpty(geetestValidate) &&
                !string.IsNullOrEmpty(geetestSeccode))
            {
                const string privateKey = "91f6e4142cf97fa261c8decc1be5c2fd";
                var          geetest    = new GeetestLib(privateKey);

                var result = geetest.validate(geetestChallenge, geetestValidate, geetestSeccode);

                return(result);
            }
            return(false);
        }
Пример #24
0
        protected String getGTFront()
        {
            String     private_key = "0f1a37e33c9ed10dd2e133fe2ae9c459";
            String     captcha_id  = "a40fd3b0d712165c5d13e6f747e948d4";
            GeetestLib geetest     = new GeetestLib(private_key, captcha_id);

            if (geetest.register())
            {
                return(geetest.getGTApiUrl());
            }
            else
            {
                //TODO
                return("");
            }
        }
Пример #25
0
        /// <summary>
        /// 验证是否正确
        /// </summary>
        /// <param name="publicKey">验证码ID</param>
        /// <param name="privateKey">验证码KEY</param>
        /// <param name="Challenge">参数一</param>
        /// <param name="Validate">参数二</param>
        /// <param name="Seccode">参数三</param>
        /// <returns></returns>
        public static bool Submit(string publicKey, string privateKey, string Challenge, string Validate, string Seccode)
        {
            GeetestLib geetest = new GeetestLib(publicKey, privateKey);
            string     gt_server_status_code = CookieHelper.Get(GeetestLib.gtServerStatusSessionKey);
            int        result = 0;

            if (gt_server_status_code == "1")
            {
                result = geetest.enhencedValidateRequest(Challenge, Validate, Seccode, "test");
            }
            else
            {
                result = geetest.failbackValidateRequest(Challenge, Validate, Seccode);
            }
            return(result == 1);
        }
Пример #26
0
        protected void submitBtn_Click(object sender, EventArgs e)
        {
            GeetestLib geetest = GeetestLib.getGtSession(Session);
            int        gt_server_status_code = GeetestLib.getGtServerStatusSession(Session);
            String     result = "";

            if (gt_server_status_code == 1)
            {
                result = geetest.enhencedValidateRequest(Request);
            }
            else
            {
                result = geetest.failbackValidateRequest(Request);
            }
            Response.Write(result);
        }
Пример #27
0
        protected void submitBtn_Click(object sender, EventArgs e)
        {
            String     privateKey = "0f1a37e33c9ed10dd2e133fe2ae9c459";
            GeetestLib geetest    = new GeetestLib(privateKey);
            Boolean    result     = geetest.validate(Request);

            if (result)
            {
                //验证正确后的操作
                Response.Write("ok");
            }
            else
            {
                //验证错误后的操作
                Response.Write("error");
            }
        }
Пример #28
0
        public async Task <JsonResult> Login(LoginViewModel loginModel, string returnUrl = "", string returnUrlHash = "", string challenge = "", string validate = "", string seccode = "")
        {
            try
            {
                var geetest = new GeetestLib(
                    ConfigurationManager.AppSettings["CheckCode.GeetestLib.PublicKey"],
                    ConfigurationManager.AppSettings["CheckCode.GeetestLib.PrivateKey"]);
                var gtServerStatusCode = (Byte)Session[GeetestLib.gtServerStatusSessionKey];
                var userCheckCode      = (String)Session["userCheckCode"];
                var result             = gtServerStatusCode == 1 ? geetest.enhencedValidateRequest(challenge, validate, seccode, userCheckCode) : geetest.failbackValidateRequest(challenge, validate, seccode);
                if (result != 1)
                {
                    throw new UserFriendlyException("验证码错误!");
                }

                CheckModelState();

                var loginResult = await GetLoginResultAsync(
                    loginModel.UsernameOrEmailAddress,
                    loginModel.Password,
                    loginModel.TenancyName
                    );

                await SignInAsync(loginResult.User, loginResult.Identity, loginModel.RememberMe);

                if (string.IsNullOrWhiteSpace(returnUrl))
                {
                    returnUrl = Request.ApplicationPath;
                }

                if (!string.IsNullOrWhiteSpace(returnUrlHash))
                {
                    returnUrl = returnUrl + returnUrlHash;
                }
            }
            catch (UserFriendlyException ex)
            {
                return(Json(new AjaxResponse(new ErrorInfo(ex.Message, ex.Details))));
            }

            return(Json(new AjaxResponse {
                TargetUrl = returnUrl
            }));
        }
Пример #29
0
        // 二次验证接口,POST请求
        public JsonResult SecondValidate()
        {
            GeetestLib gtLib     = new GeetestLib(GeetestConfig.GEETEST_ID, GeetestConfig.GEETEST_KEY);
            string     challenge = Request.Form[GeetestLib.GEETEST_CHALLENGE];
            string     validate  = Request.Form[GeetestLib.GEETEST_VALIDATE];
            string     seccode   = Request.Form[GeetestLib.GEETEST_SECCODE];
            int?       status    = HttpContext.Session.GetInt32(GeetestLib.GEETEST_SERVER_STATUS_SESSION_KEY);
            string     userId    = HttpContext.Session.GetString("userId");

            // session必须取出值,若取不出值,直接当做异常退出
            if (status is null)
            {
                return(Json(new { result = "fail", version = GeetestLib.VERSION, msg = "session取key发生异常" }));
            }
            GeetestLibResult result = null;

            if (status == 1)
            {
                /*
                 * 自定义参数,可选择添加
                 *  user_id user_id作为客户端用户的唯一标识,确定用户的唯一性;作用于提供进阶数据分析服务,可在register和validate接口传入,不传入也不影响验证服务的使用;若担心用户信息风险,可作预处理(如哈希处理)再提供到极验
                 *  client_type 客户端类型,web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生sdk植入app应用的方式;unknown:未知
                 *  ip_address 客户端请求sdk服务器的ip地址
                 */
                IDictionary <string, string> paramDict = new Dictionary <string, string> {
                    { "user_id", userId }, { "client_type", "web" }, { "ip_address", "127.0.0.1" }
                };
                result = gtLib.SuccessValidate(challenge, validate, seccode, paramDict);
            }
            else
            {
                result = gtLib.FailValidate(challenge, validate, seccode);
            }
            // 注意,不要更改返回的结构和值类型
            if (result.GetStatus() == 1)
            {
                return(Json(new { result = "success", version = GeetestLib.VERSION }));
            }
            else
            {
                return(Json(new { result = "fail", version = GeetestLib.VERSION, msg = result.GetMsg() }));
            }
        }
Пример #30
0
        private String getCaptcha()
        {
            GeetestLib geetest = new GeetestLib();

            geetest.CaptchaID  = GeetestConfig.publicKey;
            geetest.PrivateKey = GeetestConfig.privateKey;
            geetest.setGtSession(Session);
            String resStr = "";

            if (geetest.preProcess())
            {
                resStr = geetest.getSuccessPreProcessRes();
                geetest.setGtServerStatusSession(Session, 1);
            }
            else
            {
                resStr = geetest.getFailPreProcessRes();
                geetest.setGtServerStatusSession(Session, 0);
            }
            return(resStr);
        }