简单记录,在angular项目中配置统一的api请求token,代码见下图
import { NgModule, Optional, SkipSelf } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { JwtModule, JWT_OPTIONS } from '@auth0/angular-jwt';
import { UserAuthService } from '../app/services/user-auth.service';
import { EnvironmentService } from './services/environment.service';
export function jwtOptionsFactory(
authService: UserAuthService,
env: EnvironmentService
) {
return {
tokenGetter: () => {
if (authService.loggedUser()) {
return authService.loggedUser().token
? authService.loggedUser().token.access_token
: null;
}
return null;
},
whitelistedDomains: [
`${env.config.serviceUrl}`.replace(/(http|https):\/\//, '').split('/')[0],
],
};
}
@NgModule({
declarations: [],
imports: [
HttpClientModule,
JwtModule.forRoot({
jwtOptionsProvider: {
provide: JWT_OPTIONS,
useFactory: jwtOptionsFactory,
deps: [UserAuthService, EnvironmentService],
},
}),
],
exports: [],
})
export class CoreModule {
constructor(@Optional() @SkipSelf() core: CoreModule) {
if (core) {
throw new Error('You should import core module only in the root module');
}
}
}