Authentication.AzureADB2 C .UI - Как настроить страницу ошибок -. Net Core 3.1 - PullRequest
1 голос
/ 27 мая 2020

У меня есть проект, в котором мы используем пакет Microsoft.AspNetCore.Authentication.AzureADB2 C .UI для аутентификации с помощью Azure AD B2 C. Иногда, если срок сеанса истекает или пользователь пытается войти прямо со страницы входа Azure AD B2 C, появляется эта страница ошибки [Страница ошибки] (https://github.com/dotnet/aspnetcore/blob/master/src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Areas/AzureADB2C/Pages/Account/Error.cshtml): Error page

Однако я хотел бы настроить эту страницу, но я не мог понять, как это сделать.

Я уже настраиваю AzureADB2 C Контроллер , чтобы использовать настраиваемую страницу выхода, заменив метод выхода. Однако в этом контроллере нет метода «Ошибка».

Может ли кто-нибудь показать мне направление на go?

Спасибо

ОБНОВЛЕНИЕ

В дополнение к предоставленному исправлению я также изменил приведенный ниже код, чтобы заставить пользователя снова перенаправляться на страницу входа в систему, если произойдет удаленный сбой. Я заметил, что это решает большую часть случаев, когда кто-то получит эту ошибку:

`public class AzureADB2COpenIdConnectOptionsConfigurator : IConfigureNamedOptions<OpenIdConnectOptions>`

(...)

public void Configure(string name, OpenIdConnectOptions options)
        {
           (...)
            options.Events.OnRemoteFailure = WrapOpenIdConnectEvent(options.Events.OnRemoteFailure, OnRemoteFailture);
           (...)
}

  private Task OnRemoteFailture(RemoteFailureContext context)
        {
            // Log exception
            _logger.LogInformation("Azure - Failure Sign In - ContextFailure: " + context.Failure.ToString());

            // Redirect user to SignIn, most of the times, the user will be simply logged in and won't see the developer page exception anymore
            context.Response.Redirect("/AzureADB2C/Account/SignIn");

            context.HandleResponse();

            return Task.CompletedTask;
        }

1 Ответ

1 голос
/ 27 мая 2020
if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Account/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.

    //Put this  method:
    app.UseRewriter(new RewriteOptions().Add(context =>
    {
        if (context.HttpContext.Request.Path == "/AzureADB2C/Account/SignedOut")
        {
            context.HttpContext.Response.Redirect("/Home/SignedOut");
        }
    }));
    app.UseHsts();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...