Я пытаюсь реализовать пакет nuget reCAPTCHA.AspNetCore 2.1.1 в своем проекте, все настроено, я создал сайты gtp captcha с v2 невидимым и V3, чтобы проверить, потому что мне нужна капча работает невидимым:
этикетка: SicotX
домен: localhost
Версия: v2 invisible
ярлык: localhost
домен: localhost
Версия: V3
Я следовал документации , поэтому я делаю следующее:
Startup.cs, в ConfigureServices:
services.Configure<RecaptchaSettings>(Configuration.GetSection("RecaptchaSettings"));
services.AddTransient<IRecaptchaService, RecaptchaService>();
в appsettings.json я добавил конфигурацию:
"RecaptchaSettings": {
"SecretKey": "mysecretkey1",
"SiteKey": "mysitekey1",
"Version": "v2-invisible" }
Я добавил @ Html.Recaptcha в форму входа:
<form asp-area="Identity" asp-controller="Account" asp-action="Login" method="post" class="ffl-form" id="loginForm">
<h3>@Localizer["Ingrese al portal de SicotX"]</h3>
<h6>@Localizer["con sus Credenciales"]</h6>
<hr />
<div class="form-group">
<div class="ffl-wrapper">
<label asp-for="Usuario" class="ffl-label">@Localizer["Usuario"]</label>
<input asp-for="Usuario" class="form-control" autocomplete="off" />
<span asp-validation-for="Usuario" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="ffl-wrapper">
<label asp-for="Contraseña" class="ffl-label">@Localizer["Contraseña"]</label>
<input asp-for="Contraseña" class="form-control" />
<span asp-validation-for="Contraseña" class="text-danger"></span>
</div>
</div>
<div class="form-group">
@Html.Recaptcha(RecaptchaSettings?.Value)
</div>
<div class="form-group text-center">
<button id="recaptcha" type="submit" class="btn btn-primary">@Localizer["Ingresar"] <i class="fa fa-user"></i></button>
</div>
</form>
В действии учетной записи контроллера учетной записи:
public async Task<IActionResult> Login(LoginViewModel model)
{
var recaptcha = await _recaptcha.Validate(Request);
if (!recaptcha.success)
{
ModelState.AddModelError("Error", _localizer["Hubo un error de validación del Captcha. Por favor intente nuevamente!"].Value);
_logger.LogInformation($"Hubo un error de validación del Captcha.");
} ...
Когда я запускаю приложение, оно выдает ответ страницы исключения:
ValidationException: хост Recaptcha и хост запроса не совпадают. Попытка подделки?
reCAPTCHA.AspNetCore.RecaptchaService.Validate(HttpRequest request, bool antiForgery) in RecaptchaService.cs
SicotX.Areas.Identity.Controllers.AccountController.Login(LoginViewModel model) in AccountController.cs
+
var recaptcha = await _recaptcha.Validate(Request);
Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
SicotX.Startup+<>c+<<Configure>b__6_1>d.MoveNext() in Startup.cs
+
await next();
SicotX.Startup+<>c+<<Configure>b__6_0>d.MoveNext() in Startup.cs
+
await next();
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Я изменяю appSettings.json, чтобы использовать V3 sitekey и secretkey, но получаю одно и то же исключение.
Пожалуйста, помогите!