首页 > 解决方案 > Angular - 仅在延迟加载的模块上添加身份验证拦截器

问题描述

我有 3 个模块。应用程序、报告和连接。

要访问报告模块,您需要有一个 jwt,所以我有一个身份验证拦截器来处理这个问题。目前拦截器是在我的app.module.ts中定义的,但我只希望在我的延迟加载的reports.module.ts中使用 auth 拦截器

当前设置。

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { SharedModule } from './shared/shared.module';
import { CoreModule } from './core/core.module';

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

import { AuthInterceptor } from './core/interceptors/auth.interceptor';

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        AppRoutingModule,
        BrowserAnimationsModule,
        HttpClientModule,
        SharedModule,
        CoreModule.forRoot(),
    ],
     providers: [{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

新设置

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { SharedModule } from './shared/shared.module';
import { CoreModule } from './core/core.module';

import { HttpClientModule } from '@angular/common/http';

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        AppRoutingModule,
        BrowserAnimationsModule,
        HttpClientModule,
        SharedModule,
        CoreModule.forRoot(),
    ],

    bootstrap: [AppComponent]
})
export class AppModule { }

报告.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { UpperCasePipe } from '@angular/common';
import { DatePipe } from '@angular/common';
import { TitleCasePipe } from '@angular/common';

import { ReportsRoutingModule } from './reports-routing.module';

import { ReportsComponent } from './reports.component';

import { SharedModule } from './../shared/shared.module';
...

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

import { AuthInterceptor } from './../core/interceptors/auth.interceptor';


@NgModule({
    imports: [
        CommonModule,
        SharedModule,
        ReportsRoutingModule,
        HttpClientModule,
    ],
    declarations: [
       ...
    ],
    entryComponents: [
      ...,

    ],
    providers: [DatePipe, UpperCasePipe, TitleCasePipe, { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }],

})
export class ReportsModule { }

但是,新设置不起作用,并且身份验证拦截器永远不会被触发。(我什至尝试从报告中注释掉 HTTPClientModule 导入)。

标签: angular

解决方案


推荐阅读