Как охранять маршрут маршрута в Angular? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть следующие правила маршрута:

 path: 'school', component: ShellComponent, canActivate: [AuthenticationGuard],
    children: [
      {path: 'education/documents', component: DocumentsComponent}]

Как запретить использовать открытые конкретные маршруты, например:

{path: 'education/documents', component: DocumentsComponent}]

, если пользователь имеет роль администратора или другую?

Это так же, как использовать пользовательское промежуточное ПО, например: canActivate: [AuthenticationGuard]

1 Ответ

0 голосов
/ 30 мая 2018

Создайте файл Gaurd, и вы можете обновить его в соответствии с вашими требованиями

import {Injectable} from '@angular/core';
import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {Observable} from 'rxjs';

@Injectable({
     providedIn: 'root'
})

export class AuthGuard implements CanActivate {

constructor(private helper: HelperService, private auth: AuthService) { }

canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {

    if (this.auth.isLoggedIn) {
        // logged in so return true
        return true;
    }
    // not logged in so redirect to login page with the return url
    this.helper.redirect('/');
    return false;
    }
}

Использовать охрану в файлах маршрутов:

{path: 'account',component: AccountComponent,canActivate: [AuthGuard]},
children: [
{
    path: 'account',
    component: AccountComponent,
    canActivate: [AuthGuard]
}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...