Защита авторизации вносит большой вклад в ленивую загрузку модулей angular. Кстати, в angular есть много типов защиты, например (CanActivate, CanActivateChild, canDeactivate, CanLoad). Но мы поговорим о canActivate и canLoad guard.

Если маршрут должен быть открыт на основании условия, то это возможно для охранника.

Краткая и полная информация

CanActivate: защищает маршрут, но не препятствует загрузке этого модуля.

canActivate(): Promise<boolean | UrlTree> {
    if (localStorage.getItem("token")) {
      const tree:UrlTree=this.router.parseUrl('/');
      return tree;
    } else {
      return true;
    }
  }

CanLoad: это полностью защищает маршрут. Например, отложенная загрузка модуля, а также защита всех маршрутов, связанных с этим модулем. Если пользователь не авторизован, он можетLoad Guard позволяет избежать дополнительной загрузки модулей аутентификации.

canLoad(): Promise<boolean | UrlTree> {
    if (localStorage.getItem("token")) {
      return true;
    } else {
      const tree:UrlTree=this.router.parseUrl('/login');
      return tree;
    }
  }

Можно активировать и загрузить с примером

Защиты маршрута чаще всего реализуются как классы, реализующие необходимый интерфейс защиты маршрута. Давайте посмотрим на пример с защитой маршрута CanActivate, где мы запрашиваем у службы аутентификации, аутентифицирован ли пользователь:

Интерфейс CanLoad не имеет доступа к текущему состоянию маршрутизатора или активированному маршруту.

Примечание. CanLoad и canActivate вместо этого предназначены для улучшения UX для ваших приложений. если мы создаем приложение с ошибкой, то мы должны быть реализованы на сервере, который должен быть безопасным.

Нажмите 👏 или Следуйте за мной на Medium или Linkedin , чтобы узнать больше о Angular и Javascript, Pradeep и JS!