Хозяин рекапчи и хост запроса не совпадают.Попытка подделки - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь реализовать пакет 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, но получаю одно и то же исключение.

Пожалуйста, помогите!

...