ng-alain

ng-alain自定义路由拦截

2018-12-15  本文已影响0人  谢炳南

1.在app的shared目录下新建login-guard文件夹在其新建login-guard.ts文件

import { CanActivate, CanActivateChild } from '@angular/router';
import { Observable } from 'rxjs';
import { Injector, Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { StartupService } from '@core/startup/startup.service';

@Injectable()
export class LoginGuard implements CanActivate, CanActivateChild {
    constructor(
        private router: Router,
        private injector: Injector,
        public st: StartupService,
    ) { }
    canActivate(): Observable<boolean> | Promise<boolean> | boolean {
        return this.logIn();
    }
    canActivateChild(): Observable<boolean> | Promise<boolean> | boolean {
        return this.logIn();
    }
    private logIn() {
        let token = sessionStorage.getItem('token');
        if (!token) {
            this.goTo('/passport/login');
            return false;
        } else {
            return true;
        }
    }
    private goTo(url: string) {
        setTimeout(() => this.injector.get(Router).navigateByUrl(url));
    }
}

2.打开app.module.ts在providers里面添加模块

import { LoginGuard } from '@shared/login-guard/login-guard.module';

providers: [
    LoginGuard
],

3.打开在app下的routes目录下的routes-routing.module.ts文件新增LoginGuard 路由拦截去掉ng-alain默认的路由拦截

import {LoginGuard } from '@shared/login-guard/login-guard.module';
const routes: Routes = [
        path: '',
        component: LayoutDefaultComponent,
        // canActivate: [SimpleGuard],
        canActivate: [LoginGuard],
        children: [
        ]
]
上一篇下一篇

猜你喜欢

热点阅读