/// <summary> /// Creates the framework control. /// </summary> /// <param name="context">Contains information associated with the current HTML tag.</param> /// <param name="output">A stateful HTML element used to generate an HTML tag.</param> /// <returns>The control instance.</returns> protected override IFWHtmlElement RenderControl(TagHelperContext context, TagHelperOutput output) { var cacheKey = $"LoginAttempt_{RequestContext.Url.ActionContext.HttpContext.Connection.RemoteIpAddress}"; if (_memoryCache.GetOrCreate(cacheKey, entry => 0) >= _options.RequiredAttempts) { ViewContext.AddRemoteScript(_options.ScriptAddress); var control = new FWRecaptchaControl(_options.SiteKey); return(control); } return(FWControl.EmptyControl); }