/// <summary>
		/// Overrides default <see cref="M:System.Web.Mvc.ActionFilterAttribute.OnActionExecuting(System.Web.Mvc.ActionExecutingContext)"/> method by adding custom validation logic.
		/// </summary>
		/// <param name="filterContext">Filter Context</param>
		public override void OnActionExecuting(ActionExecutingContext filterContext)
		{
			try
			{
				string response = filterContext.HttpContext.Request.Form["g-recaptcha-response"];
				string remoteIP = filterContext.HttpContext.Request.UserHostAddress;

				RecaptchaValidationService rvs = new RecaptchaValidationService();
				RecaptchaResponse result = rvs.Validate(response, remoteIP);

				if (!result.Success)
				{
					filterContext.Controller.ViewData.ModelState.AddModelError("SC.Recaptcha", Strings.ResponseError_ValidationFailed);

					List<string> errors = new List<string>();
					foreach (string error in result.ErrorCodes)
					{
						switch (error)
						{
							case ("missing-input-secret"):
								errors.Add(Strings.ResponseError_MissingInputSecret);
								break;
							case ("invalid-input-secret"):
								errors.Add(Strings.ResponseError_InvalidInputSecret);
								break;
							case ("missing-input-response"):
								errors.Add(Strings.ResponseError_MissingInputResponse);
								break;
							case ("invalid-input-response"):
								errors.Add(Strings.ResponseError_InvalidInputResponse);
								break;
							default:
								errors.Add(Strings.ResponseError_GeneralError);
								break;
						}
					}
					filterContext.HttpContext.Items["SC.Recaptcha.Errors"] = errors;
				}

				base.OnActionExecuting(filterContext);
			}
			catch (Exception ex)
			{
				//TODO: Add Exception handling logic here.
			}
		}
Пример #2
0
		protected void btnClickMe_Click(object sender, EventArgs e)
		{
			string response = Request.Form["g-recaptcha-response"];
			string remoteIP = Request.UserHostAddress;

			RecaptchaValidationService rvs = new RecaptchaValidationService();
			RecaptchaResponse result = rvs.Validate(response, remoteIP);

			if (result.Success)
				lblError.Text = "Hurray! You are human!";
			else
				lblError.Text = Strings.ResponseError_ValidationFailed;

			////Get error details if needed

			//if (!result.Success)
			//{
			//	List<string> errors = new List<string>();

			//	foreach (string error in result.ErrorCodes)
			//	{
			//		switch (error)
			//		{
			//			case ("missing-input-secret"):
			//				errors.Add(Strings.ResponseError_MissingInputSecret);
			//				break;
			//			case ("invalid-input-secret"):
			//				errors.Add(Strings.ResponseError_InvalidInputSecret);
			//				break;
			//			case ("missing-input-response"):
			//				errors.Add(Strings.ResponseError_MissingInputResponse);
			//				break;
			//			case ("invalid-input-response"):
			//				errors.Add(Strings.ResponseError_InvalidInputResponse);
			//				break;
			//			default:
			//				errors.Add(Strings.ResponseError_GeneralError);
			//				break;
			//		}
			//	}
			//}
		}