Как перенаправить неаутентифицированных пользователей Blazor Azure AD на страницу, отличную от аутентифицированных? - PullRequest
1 голос
/ 14 февраля 2020

Я использую шаблоны Blazor Server, включенные в Visual Studio 2019.

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

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

Есть ли Есть ли способ достичь этого? Возможно, мне что-то не хватает в App.razor?

Редактировать:

Если я выйду из системы по ссылке navbar, а затем вернусь назад в своем браузере, я смогу просматривать страницы без авторизации. Но затем, когда я переосмыслил sh страницу, меня отправили обратно на https://login.microsoftonline.com/. Что может быть причиной этого? Я хочу просмотреть неавторизованную домашнюю страницу без перенаправления.

1 Ответ

0 голосов
/ 16 февраля 2020

Поведение, которое вы видите, является дизайном.

Чтобы изменить его, вы можете внести это изменение в Startup.Configure:

services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    //options.Filters.Add(new AuthorizeFilter(policy));
});

(и, конечно, уменьшить этот код до services.AddControllersWithViews();, если вы хотите сохранить его таким образом.)

С этим изменением вам придется блокировать личные страницы с помощью @attribute [Authorize] или <AuthorizeView>, а автоматическое c перенаправление на страницу входа отсутствует.

...