Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 440новых вакансий за сутки·54 706вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 625
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 397 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 748
  • Облачные технологии6 616
  • QA вакансии2 169
  • Android1 320
  • Инженер данных872
  • Продакт-менеджер302

Разработка

  • iOS1 232
  • Backend вакансии1 204
  • AI вакансии543
  • Fullstack вакансии497
  • Frontend вакансии417
  • Mobile вакансии28

По стеку

  • Go5 212
  • Java3 116
  • Kotlin1 090
  • Node.js995
  • Rust845
  • .NET661
  • PHP320
  • C++271
  • C#208

DevOps и инфраструктура

  • Kubernetes3 913
  • Linux-инфраструктура2 852
  • DevOps вакансии2 678
  • Terraform / IaC2 167
  • Мониторинг и Observability1 066
  • CI/CD923
  • SRE301
  • Кибербезопасность26

Аналитика и данные

  • Аналитик данных533
  • Data Scientist436
  • Бизнес-аналитик400
  • Системный аналитик68

Другие направления

  • Проджект-менеджер90
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме BlazorВсе вопросы
BlazorSeniorПроектирование систем

Как реализовать аутентификацию и авторизацию в Blazor?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

В Blazor аутентификация строится на ASP.NET Core Identity или внешних провайдерах (OIDC), а авторизация — через AuthorizeRouteView, атрибут [Authorize] и сервис IAuthorizationService.

Blazor Server

В Blazor Server состояние аутентификации передаётся с сервера напрямую. В Program.cs регистрируется Identity:

builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "https://auth.example.com";
    options.ClientId = "blazor-app";
    options.ResponseType = "code";
    options.SaveTokens = true;
});

builder.Services.AddAuthorization();
builder.Services.AddCascadingAuthenticationState();

Аутентификация и авторизация в Blazor

Blazor полностью опирается на инфраструктуру ASP.NET Core для аутентификации и авторизации. Ключевой абстракцией является AuthenticationStateProvider, который предоставляет компонентам информацию о текущем пользователе через Task<AuthenticationState>.

Blazor WebAssembly

В WASM-варианте токен хранится в браузере. Устанавливается пакет Microsoft.AspNetCore.Components.WebAssembly.Authentication, а провайдер настраивается через AddOidcAuthentication:

// Program.cs (WASM)
builder.Services.AddOidcAuthentication(options =>
{
    options.ProviderOptions.Authority = "https://auth.example.com";
    options.ProviderOptions.ClientId = "blazor-wasm";
    options.ProviderOptions.ResponseType = "code";
    options.ProviderOptions.DefaultScopes.Add("openid");
    options.ProviderOptions.DefaultScopes.Add("profile");
    options.ProviderOptions.DefaultScopes.Add("api");
});

Защита маршрутов

В Routes.razor используйте AuthorizeRouteView вместо RouteView, чтобы маршруты, помеченные [Authorize], требовали входа:

<Router AppAssembly="typeof(App).Assembly">
    <Found Context="routeData">
        <AuthorizeRouteView RouteData="routeData"
                            DefaultLayout="typeof(MainLayout)">
            <NotAuthorized>
                <RedirectToLogin />
            </NotAuthorized>
        </AuthorizeRouteView>
    </Found>
</Router>

Авторизация в компонентах

Компонент AuthorizeView позволяет показывать разный UI в зависимости от состояния:

<AuthorizeView Roles="Admin">
    <Authorized>
        <p>Добро пожаловать, @context.User.Identity!.Name</p>
    </Authorized>
    <NotAuthorized>
        <p>Доступ запрещён.</p>
    </NotAuthorized>
</AuthorizeView>

В code-behind применяется атрибут [Authorize] с политиками:

@page "/admin"
@attribute [Authorize(Policy = "RequireAdminRole")]

// Регистрация политики
builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("RequireAdminRole", policy =>
        policy.RequireRole("Admin")
              .RequireClaim("department", "IT"));
});

Для программной проверки в компонентах используется IAuthorizationService:

@inject IAuthorizationService AuthService

var result = await AuthService.AuthorizeAsync(User, resource, "EditPolicy");
if (!result.Succeeded) { /* запрет */ }

Подводные камни

  • В Blazor Server SignalR-соединение не переаутентифицируется автоматически при истечении cookie — нужно принудительно обновлять страницу или реализовывать кастомный AuthenticationStateProvider.
  • В Blazor WASM токен хранится в SessionStorage или LocalStorage — при XSS атаке злоумышленник может его похитить; предпочтительнее BFF (Backend For Frontend) с httpOnly cookie.
  • AuthorizeView скрывает UI, но не защищает API-эндпоинты — всегда проверяйте авторизацию на сервере.
  • Роли и клеймы в WASM приходят из JWT; если токен устарел, context.User.IsInRole("Admin") вернёт false даже при успешной аутентификации.
  • Атрибут [Authorize] на компоненте в Blazor Server обрабатывается на уровне маршрутизации, а не HTTP-middleware — нельзя полагаться на него без AuthorizeRouteView.
  • При использовании Blazor Web App (.NET 8) режим рендеринга влияет на доступность HttpContext: в Interactive режимах он недоступен, берите данные через AuthenticationStateProvider.

Частые вопросы на собеседовании

  • В чём разница между Blazor Server и Blazor WebAssembly?
  • Что такое Blazor и каковы его основные модели хостинга?
  • Как Blazor управляет повторным рендерингом компонентов и как его оптимизировать?
  • В каких типах frontend-проектов Blazor даёт реальный выигрыш, а где будет избыточен или неудачен?

Типичные ошибки

  • Путать authentication state и authorization views с похожим механизмом из другой версии или платформы.
  • Игнорировать runtime-границы Blazor: lifecycle, DI scope, SQL translation, UI thread или platform API.
  • Не обсуждать null/empty/error cases и поведение под нагрузкой.

Что проверяет интервьюер

  • Кандидат объясняет authentication state и authorization views на конкретном примере, а не только определением.
  • Указывает последствия для производительности, тестируемости и поддержки.
  • Различает документированное поведение текущего стека и устаревшие практики.

Как вы знаете этот вопрос?

Проверить себя по теме Blazor →

Источники

  • https://learn.microsoft.com/en-us/aspnet/core/blazor/security/
←Предыдущий вопросКак выполнять HTTP-запросы в приложении Blazor WebAssembly?Следующий вопрос→Что такое Blazor United / Blazor Web App, представленный в .NET 8?

Связанные темы

Blazorruntime-reasoningsecure-api-designsystem-design