Ionic Auth Gaurd может загружать на основе публичного логического массива
Ситуация: я занят разработкой онлайн-курса, в котором пользователь должен просмотреть серию страниц по порядку, но я хочу, чтобы они не переходили на другие страницы. Если они попытаются это сделать, текущая страница просто загрузится снова.
Моя идея: я создал публичный логический массив, который отслеживает прогресс пользователей (пример ниже):
progress: [boolean, boolean, boolean] = [true, false, false];
End of Page 1:
progress[0] = false;
progress[1] = true;
End of Page 2:
progress[1] = false;
progress[2] = true;
Мой вопрос: как я могу использовать защиту аутентификации, canLoad, чтобы запретить пользователю доступ к любым другим страницам на основе массива прогресса?
У меня много страниц, и я бы хотел выполнить проверку с помощью одного Auth Gaurd, а не создавать защиту для каждой страницы.
2 ответа
Трудно дать вам точный код, но ниже несколько наивно, как я бы это сделал:
Внутри общего провайдера, доступного для всех ваших страниц, создайте объект для отслеживания прогресса:
public progress: {
pageRoutePathName1: boolean,
pageRoutePathName2: boolean,
}
В основном свойства объекта должны соответствовать значению пути вашего маршрута
Затем просто обновите состояние логических значений объекта, аналогичное тому, что вы имели в виду.
Импортируйте такого совместно используемого провайдера в вашу защиту загрузки и используйте объект для метода canLoad:
canLoad(route: Route, segments: UrlSegment[]): Promise<boolean> | boolean {
if (this.sharedProvider.progress[route.path] === true) {
return true
} else {
return false
}
}
Я нашел тему, соответствующую моей проблеме. Этот ответ сработал для меня - он переключает одно логическое значение до и после навигации по кнопке (запрещая навигацию в моем ручном вводе URL-адреса).