Требовать авторизацию на ВСЕХ страницах 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