Moin zusammen,
ich bastel aktuell 'ne MEAN-Anwendung. Bin ziemlich gut voran gekommen die letzten Wochen, hänge jetzt aber an einem Brocken, von dem ich noch nicht weiß, wie ich ihn kleiner bekomme.
Die entwickelte Software ist doch ziemlich groß geworden und wurde zu guter letzt um ein ausführliches Rechtemanagement ergänzt - woher dann auch mein Problem rührt.
Etliche Menüpunkte und Funktionen sind an Rechte gebunden. Wenn also der View geladen wird, muss ich eine Prüfung der Rechte vornehmen und anschließend entsprechend Elemente ein- bzw. ausblenden. Zum Glück gibts *ngIf dachte ich mir und so habe ich meine navbar einfach mit *ngIf Abfragen gespickt, die wie folgt aussahen (Beispiel):
<divclass="dropdown-menu"aria-labelledby="navbarDropdown">
<aclass="dropdown-item" *ngIf="authService.isAdmin() || userRightsService.userHasRight('canCreateHardware')" [routerLink]="['/createHardware']" (click)="checkForRelog()">Anlegen</a>
<aclass="dropdown-item" *ngIf="authService.isAdmin() || userRightsService.userHasRight('canSearchHardware')[routerLink]="['/search']" (click)="checkForRelog()">Suchen</a>
</div>
Problem bei dem Ganzen ist allerdings, dass der userRightsService mir komplett um die Ohren fliegt. Jeder Seitenreload bringt eine Auslösung der Abfrage mit sich, bei jedem DOM-Event findet wohl ein rebuild der Navigation statt, weshalb stetig hunderte Requests an den userRightsService rausgehen. Der Service decodiert das Token im Hintergrund, prüft auf das Recht und liefert dann true oder false zurück.
Folge: Die ganze Anwendung ist sterbenslangsam, Firefox frisst 90% CPU Leistung und die Lust ist dahin.
Ich hab jetzt diverse Dinge probiert, mir fehlt aber der richtige Ansatz. Aktuell hab ich eine Krücke gebaut... einmalig werden die Rechte angefragt, wenn der User sich einloggt, anschließend gibts einen window.location.reload() und die Menüpunkte sind wie gewünscht da - fühlt sich aber nicht gut / richtig an.
Vielleicht gibts ja hier den ein oder anderen MEAN Spezi, der mir sagen kann, wie man so ein Problem am Besten lösen würde.
ich bastel aktuell 'ne MEAN-Anwendung. Bin ziemlich gut voran gekommen die letzten Wochen, hänge jetzt aber an einem Brocken, von dem ich noch nicht weiß, wie ich ihn kleiner bekomme.
Die entwickelte Software ist doch ziemlich groß geworden und wurde zu guter letzt um ein ausführliches Rechtemanagement ergänzt - woher dann auch mein Problem rührt.
Etliche Menüpunkte und Funktionen sind an Rechte gebunden. Wenn also der View geladen wird, muss ich eine Prüfung der Rechte vornehmen und anschließend entsprechend Elemente ein- bzw. ausblenden. Zum Glück gibts *ngIf dachte ich mir und so habe ich meine navbar einfach mit *ngIf Abfragen gespickt, die wie folgt aussahen (Beispiel):
<divclass="dropdown-menu"aria-labelledby="navbarDropdown">
<aclass="dropdown-item" *ngIf="authService.isAdmin() || userRightsService.userHasRight('canCreateHardware')" [routerLink]="['/createHardware']" (click)="checkForRelog()">Anlegen</a>
<aclass="dropdown-item" *ngIf="authService.isAdmin() || userRightsService.userHasRight('canSearchHardware')[routerLink]="['/search']" (click)="checkForRelog()">Suchen</a>
</div>
Problem bei dem Ganzen ist allerdings, dass der userRightsService mir komplett um die Ohren fliegt. Jeder Seitenreload bringt eine Auslösung der Abfrage mit sich, bei jedem DOM-Event findet wohl ein rebuild der Navigation statt, weshalb stetig hunderte Requests an den userRightsService rausgehen. Der Service decodiert das Token im Hintergrund, prüft auf das Recht und liefert dann true oder false zurück.
Folge: Die ganze Anwendung ist sterbenslangsam, Firefox frisst 90% CPU Leistung und die Lust ist dahin.
Ich hab jetzt diverse Dinge probiert, mir fehlt aber der richtige Ansatz. Aktuell hab ich eine Krücke gebaut... einmalig werden die Rechte angefragt, wenn der User sich einloggt, anschließend gibts einen window.location.reload() und die Menüpunkte sind wie gewünscht da - fühlt sich aber nicht gut / richtig an.
Vielleicht gibts ja hier den ein oder anderen MEAN Spezi, der mir sagen kann, wie man so ein Problem am Besten lösen würde.
Zuletzt bearbeitet:
