Wie können Sie einen Wächter für verzögert geladene Module in Angular erstellen?

Implementierung des CanLoad-Interfaces für Wächter in Angular

Die richtige Antwort auf die Frage, wie man in Angular einen Wächter für verzögert geladene Module erstellt, ist durch die Implementierung eines Dienstes, der das CanLoad-Interface nutzt.

Das CanLoad-Interface ist ein Teil der Angular Router-Bibliothek und ermöglicht es Entwicklern, eine autoritative Methode zum Steuern, ob ein asynchron geladenes Modul geladen werden kann oder nicht.

Ein Wächter (oder auf Englisch "Guard") ist ein Mechanismus, der den Zugriff auf eine bestimmte Route kontrolliert. Es wird häufig verwendet, um bestimmte Seiten in einer Anwendung zu schützen, zum Beispiel in Situationen, in denen der Benutzer authentifiziert sein muss, um auf eine Seite zuzugreifen.

Ein typischer Code für einen Guard-Dienst, der das CanLoad-Interface verwendet, könnte so aussehen:

import { Injectable } from '@angular/core';
import { CanLoad } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class FeatureGuard implements CanLoad {
  constructor(private authService: AuthService) { }
  
  canLoad(): boolean {
    return this.authService.isAuthenticated();
  }
}

In diesem Beispiel testet der Dienst FeatureGuard, ob der Benutzer authentisiert ist, bevor er das verzögert geladene Modul lädt. Der FeatureGuard-Dienst kann dann in der Routing-Konfiguration verwendet werden:

{
  path: 'some-path',
  loadChildren: () => import('./feature.module').then(m => m.FeatureModule),
  canLoad: [FeatureGuard]
}

Durch diese Implementierung wird sichergestellt, dass das Modul nur geladen wird, wenn der Benutzer authentisiert ist.

Wichtig ist hier, dass Wächter nur die Fernladung des Moduls kontrollieren. Sobald das Modul einmal geladen wurde, kontrolliert der Wächter nicht länger, ob der Benutzer auf die Routen des Moduls zugreifen kann. Dafür würden Sie das CanActivate- oder CanActivateChild-Interface verwenden.

Zusammenfassend lässt sich sagen, dass der Einsatz von Wächtern und das Implementieren des CanLoad-Interfaces in Angular eine sehr wirksame Methode ist, um den Zugriff zu steuern und sicher zu stellen, dass Benutzer die notwendigen Berechtigungen haben, um auf bestimmte Module in Ihrer Anwendung zuzugreifen.

Related Questions

Finden Sie das nützlich?