可以通过创建一个HttpInterceptor来解决这个问题,具体步骤如下:
import { Injectable } from '@angular/core'; import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'; import { Observable } from 'rxjs'; import { KeycloakSecurityService } from './keycloak-security.service';
@Injectable() export class KeycloakInterceptor implements HttpInterceptor {
constructor(private keycloak: KeycloakSecurityService) { }
intercept(request: HttpRequestBearer ${this.keycloak.getToken()}
}
});
}
return next.handle(request);
} }
@NgModule({ declarations: [ ... ], imports: [ ... ], providers: [ ..., { provide: HTTP_INTERCEPTORS, useClass: KeycloakInterceptor, multi: true, }, ], bootstrap: [ ... ] }) export class AppModule { }
这样在Angular-Keycloak中就会默认添加Bearer令牌到HTTP请求中了。