Установить URL перенаправления после входа в систему - PullRequest
2 голосов
/ 01 мая 2020

У меня Blazor Server, подключенный к Azure B2 C Cook ie Auth.

        services.AddAuthentication(AzureADB2CDefaults.CookieScheme)
                .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

        services.Configure<CookieAuthenticationOptions>(
            AzureADB2CDefaults.CookieScheme, options =>
            {
                options.Cookie.Name = "MyCookieName";
            });

Я сопоставляю контроллеры, поэтому у меня есть конечные точки контроллера, которые нужно нажать:

        app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapBlazorHub();
                endpoints.MapFallbackToPage("/_Host");
            });

На моем сервере Blazor _Host я просто использую встроенный Authorize attirbute:

@attribute [Microsoft.AspNetCore.Authorization.Authorize]

При загрузке, если пользователь не авторизован, он будет перенаправлен на B2 * 1043. * Войти без проблем. Затем я могу войти в систему, и она возвращает меня обратно в приложение.

Однако после входа в систему я не могу понять, как перенаправить на специфицированный c контроллер / действие до конечной точки что-то вроде: /api/auth/mynewuser Это действие затем выполнит некоторую проверку и перенаправит обратно на «/», позволяя пользователю продолжать использовать приложение Blazor.

Учитывая мои настройки «из коробки» в значительной степени ... как этого добиться?

изменить

код:

https://github.com/aherrick/BlazorServerB2C

Цель заключается в достижении этой конечной точки после каждого входа в систему / регистрации:

https://github.com/aherrick/BlazorServerB2C/blob/master/BlazorServerB2C/Controllers/AuthorizeController.cs

1 Ответ

1 голос
/ 04 мая 2020

Когда вы входите с помощью Azure AD B2 C, служба B2 C отправляет токен в «redirect_uri». Можно упомянуть URL-адрес перенаправления, используемый в аутентификации route для указанная c контроллер / конечная точка действия динамически. Это помогает приложению перенаправить на контроллер, когда аутентификация прошла успешно.

Кроме того, вы можете легко обрабатывать вход пользователя в систему или нет, внедрив компонент AuthorizeView или [Authorize] атрибут .

Я посмотрел на ваш Code Authorizationcontroller и действие newuser, которое находится в стадии разработки. Если вы можете запустить на странице бритвы, вы можете использовать следующее:

@page "/YourPageName"
@inject NavigationManager NavigationManager

<h1>xxx</h1>
.
.
.


@code {

    void MethodToTriggerUrl()
    {
        NavigationManager.NavigateTo("PageToRedirect");
    }
}

Также, пожалуйста, обратитесь MS Document .

...