So beschränken Sie den Benutzer auf den Zugriff auf nicht autorisierte Pfade in Angular

konowo7640

In meiner Angular-App gibt es 3 Arten von Benutzern: Administrator, Brauer (Anbieter) und Endbenutzer. Ich möchte Brauer daran hindern, auf Admin-Routen zuzugreifen, genauso wie Endbenutzer daran gehindert werden sollten, auf Admin-Routen und Vendor-Routen zuzugreifen.

Wie ich dies durch eckiges Routing erreichen kann.

const routes: Routes = [
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  {
    path: 'home', component: HomeContentComponent,
  },
  { path: 'auth', loadChildren: './modules/auth/auth.module#AuthModule' },
  {
    path: 'admin',
    loadChildren: './modules/admin/admin.module#AdminModule',
    canActivate: [AuthGuard],
  },
  {
    path: 'vendor',
    loadChildren: './modules/vendor/vendor.module#VendoreModule',
    canActivate: [AuthGuard],
  },
  {
    path: 'user',
    loadChildren: './modules/user/user.module#UserModule',
    canActivate: [AuthGuard],
  }
]

Auth Guard:

import { Injectable } from "@angular/core";
import {
  CanActivate,
  ActivatedRouteSnapshot,
  RouterStateSnapshot,
  Router,
  CanDeactivate,
} from "@angular/router";
import { Observable } from "rxjs";
import { AuthService } from "../services/firebase/auth.service";

@Injectable({ providedIn: "root" })
export class AuthGuard implements CanActivate {
  constructor(public authService: AuthService, public router: Router) {}
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean> | Promise<boolean> | boolean {
    // Guard for userRole is login or not
    // var Role=localStorage.getItem('role')
    let user = localStorage.getItem('toke');
    if (!user) {
      this.router.navigate(["/auth/login"]);
      return true;
    }
    return true;
  }
}

Ich habe auth guard wie folgt, wie ich es ändern kann, um die gewünschte Funktionalität zu erreichen.

Es wäre sehr dankbar, wenn jemand helfen könnte.

Manish Patidar

Ich habe dies erreicht, indem ich Logik verwendet habe ,

Sie können Logik wie in Ihrer app.component.ts verwenden

import { Router, NavigationEnd } from '@angular/router';
    
export class AppComponent implements OnInit {
      constructor(
        private router: Router,
      ) {
        this.router.events.subscribe((ev) => {
          if (ev instanceof NavigationEnd) {
    
            const user = localStorage.getItem("Id");
            const Role = localStorage.getItem('UserRole')
            if (user && Role && Role === 'User' && ev.url.includes('/admin)) {
                this.router.navigate(['user/home']);
          }
        }
      }

In ähnlicher Weise können Sie für alle Ihre Rollen if-Bedingungen definieren und auf ihrer Hauptroute umleiten, wenn Benutzer dann die Standardseite des Benutzers, wenn Super-Admin, dann könnte es Admin/Dashboard oder so etwas sein.

Zweiter Weg:

Eine andere Möglichkeit, dies zu erreichen, ist die Verwendung von ngx-Berechtigungen , mit denen Sie Ihre Route rollenbasiert steuern können.

Stackblitz - Demo zur weiteren Verdeutlichung anhängen .

Offizielles Dokument

NPM-Paket

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So beschränken Sie den Zugriff nicht autorisierter Benutzer auf verschiedene Seiten in django

JHipster: So beschränken Sie den Benutzer auf den Zugriff auf eigene Daten mit REST

Beschränken Sie den Zugriff auf den authentifizierten Benutzer

Django: Beschränken Sie den Zugriff auf statische Ordner auf nicht eingeloggte Benutzer

Beschränken Sie den Zugriff auf Benutzer Node.js.

So beschränken Sie den S3-Zugriff auf Benutzer von Active Directory

So beschränken Sie den Zugriff auf Pipelines in Azure DevOps

So beschränken Sie den Zugriff auf einige öffentliche Websites

Beschränken Sie den IAM-Benutzer auf den Zugriff auf bestimmte Cognito-Benutzerpools.

C # - So gewähren Sie nur dem aktuellen Benutzer Zugriff und beschränken den Zugriff auf andere

Django – Benutzer auf den Zugriff auf URLs beschränken

Verhindern Sie den direkten Zugriff auf hochgeladene Dateien nur für nicht autorisierte Benutzer - Symfony

Beschränken Sie den Zugriff auf statische Dateien auf angemeldete Benutzer

Beschränken Sie den Zugriff auf Aufgaben nur in odoo 12 auf zugewiesene Benutzer

So beschränken Sie den plesk-Benutzer mit SSH-Zugriff nur auf seinen eigenen Webspace

Beschränken Sie den Zugriff auf den virtuellen Host

Beschränken Sie den Zugriff auf den Ordner "Protokolle"

Beschränken Sie den Zugriff auf gespeicherte Dateien auf Benutzerbasis

So beschränken Sie den Zugriff auf den Spring MVC-Controller

Beschränken Sie den Zugriff auf das Verzeichnis für Benutzer

Firebase Beschränken Sie den Zugriff auf andere Seiten, ohne dass der Benutzer angemeldet ist

Beschränken Sie den Bucket-Zugriff basierend auf dem Benutzer in minio

So beschränken Sie den Zugriff auf bestimmte Gruppen in der auf Django-Klassen basierenden Ansicht

So beschränken Sie den Zugriff auf eine Datei in .htaccess auf eine bestimmte Domäne

So beschränken Sie den Zugriff auf das Peer-Chaincode-Upgrade auf eine bestimmte Organisation

So beschränken Sie den Zugriff auf eine URL, wenn sie keinen bestimmten Header enthält

SurveyMonkey - Beschränken Sie den Zugriff auf API-Umfragen

Beschränken Sie den Zugriff auf Methodenaufrufe in Java

Beschränken Sie den Zugriff auf Slack-Slash-Befehle