/// <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"); } }
/// <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); }
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, "验证码校验失败")); } }
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(" "); } }
// 验证初始化接口,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")); }
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); }
// 二次验证接口,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() })); } }
// 验证初始化接口,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")); }
/// <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()); }
private string GetCaptcha(HttpContext context) { var geetest = new GeetestLib("7f8cfbad6525535e637bcb59a20550f8", "ae62d001e558b9dfca3e4c4f40032fcd"); var gtServerStatus = geetest.preProcess(); context.Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus; return(geetest.getResponseStr()); }
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()); }
/// <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())); }
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())); }
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()); }
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()); }
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)); }
/// <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; } }
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())); }
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())); }
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()); }
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); }
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(""); } }
/// <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); }
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); }
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"); } }
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 })); }
// 二次验证接口,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() })); } }
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); }