Требовать авторизацию на ВСЕХ страницах Blazor

Я играю с Blazor и создал веб-приложение, размещенное на сервере. Я должен поместить строку авторизации в верхней части страницы, например @attribute [Authorize], чтобы гарантировать, что пользователь вошел в систему.

Кажется, мне нужно добавить эту строку на каждую страницу отдельно. Есть ли глобальная настройка, которая защищает ВСЕ страницы в приложении, кроме страницы входа, конечно.

Спасибо!

4 ответа

Решение

Попробуй добавить в _Imports.razor. Думаю, должно работать...

На странице входа добавьте @attribute [AllowAnonymous]

Никогда раньше этого не делал. Это только догадки.

Вы можете сделать это, добавив резервную политику авторизации:

      services.AddRazorPages();

services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

Политика резервной проверки подлинности требует, чтобы все пользователи прошли проверку подлинности, за исключением Razor Pages, контроллеров или методов действий с атрибутом проверки подлинности.

Это означает, что вы можете использовать атрибуты для примера @attribute [Authorize](атрибуты ) для настройки аутентификации и авторизации.

Я сам искал для этого решение и нашел следующую ссылку . Пока вроде работает как ожидалось.

Я поместил в свой ConfigureServices следующее:

      // Add a default AuthorizeFilter to all endpoints
services.AddRazorPages()
    .AddMvcOptions(options => options.Filters.Add(new AuthorizeFilter()));

Вы можете преодолеть это, добавив промежуточное ПО в свое приложение Blazor.

Вы можете прочитать, как это реализовать, здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/write?view=aspnetcore-3.1

Другие вопросы по тегам