Как мне контролировать страницу, на которую направляется пользователь после входа в систему с помощью AAD B2C в Blazor?

У меня есть размещенный веб-сайт WASM, использующий Azure AAD B2C для аутентификации и авторизации пользователей. Корневой каталог веб-сайта - это простая целевая страница, которая представляет пользователю кнопку, которая переводит пользователя на страницу авторизации, которая идентична странице по умолчанию, созданной в соответствии с руководством по адресу https://docs.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/hosted-with-azure-active-directory-b2c?view=aspnetcore-5.0.

Я бы хотел, чтобы пользователь был перенаправлен на определенную страницу после завершения процедуры входа в систему, а не обратно на целевую страницу (а не на страницу, на которой он находился с тегом [авторизовать], к которому у него нет прав доступа). Я попытался установить returnUrl на URL-адрес страницы, на которую я хочу, чтобы пользователь был перенаправлен после входа в систему (Navigation.NavigateTo ($ authentication / login? ReturnUrl = http: // localhost: 5000 / Start);), но мы по-прежнему направлен обратно на корневую страницу.


person Michael Kossin    schedule 21.11.2020    source источник


Ответы (1)


У вас должен быть компонент аутентификации, в котором есть компонент RemoteAuthenticatorView, и у которого есть параметр OnLogInSucceeded, который вы можете использовать для регистрации метода, который будет вызываться при входе пользователя в систему - в этом методе вы можете установить state.ReturnUrl для перенаправления, где бы вы ни находились. как, например Счетчик, как показано ниже:

Authentication.razor

@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action" OnLogInSucceeded="LoginSuccessHandler" />

@code{
 [Parameter] public string Action { get; set; }
 [Inject] public NavigationManager NavigationManager { get; set; }

 void LoginSuccessHandler(RemoteAuthenticationState state)
 {
  state.ReturnUrl = "Counter";
 }
}
person Mister Magoo    schedule 22.11.2020
comment
Спасибо. Это прекрасно работает. Вы знаете, где я мог найти документацию, объясняющую это? Я не смог найти упоминания об этом ни в одной из просмотренных мной документов, касающихся защиты приложения .NET Core. - person Michael Kossin; 23.11.2020
comment
Плохая документация, нет - в документации есть страница компонента, но она ничего не объясняет об использовании компонента, но это указывало мне на OnLogInSucceeded, и оттуда оставалось просто проверить RemoteAuthenticationState, чтобы увидеть, какие параметры были доступно, и это привело к ReturnUrl. docs.microsoft.com/en-us/dotnet/api/ - person Mister Magoo; 23.11.2020