Рецепты

Аутентификация, авторизация и несохранённые изменения

Выбор Redirect или Guard по требуемому исходу и обработка ожидаемого отказа без рекурсивной навигации.

v0.1.0-dev.2Средний уровеньark_navigation

Аутентификация, авторизация и несохранённые изменения

Направить пользователя без сессии на Login

Верните LoginDestination из Redirect. Защищённая Page не будет зафиксирована.

Отклонить пользователя без разрешения

Верните NavigationGuardDenied(reason: PermissionReason.missingRole) из enter Guard. Caller получит NavigationRejected, а граница представления решит, как объяснить отказ.

Защитить редактор от случайного выхода

Проверьте context.phase == NavigationGuardPhase.leave. Пока существует черновик, возвращайте типизированную причину отказа. После подтверждения удаления обновите состояние редактора и повторите исходное прикладное действие вне Guard.

Отреагировать на sign-out

Подключите состояние аутентификации через ListenableNavigationPolicyRefresh. Session согласует текущий Destination. Не заставляйте каждый видимый функциональный модуль самостоятельно слушать sign-out и заменять Page.

Разделить отказ и ошибку

Ожидаемый Guard denial — не исключение. Исключение из политики относится к инфраструктурной ошибке и должно попасть в NavigationFailureSink и диагностические события.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.