1

アプリでグローバル認証ヘッダーを作成しています。インターセプターを使用したので、get() 関数で認証ヘッダーを宣言しません。get() 関数を呼び出すと、トークンがまだ要求されているため、インターセプターを正しく実装していますか。トークンが提供されていないと表示されます。auth.interceptor に問題はありますか? すべての get() 関数で認証ヘッダー ベアラー トークンを宣言する必要がありますか? リクエストが送信/受信されるたびにインターセプターが呼び出されると思いましたか?

auth.interceptor.ts

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
    private authService: AuthService;

    constructor(private injector: Injector) {}

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        // Get the auth header from the service.
        this.authService = this.injector.get(AuthService);
        const token = this.authService.getToken();
            if (token) {
                req = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token) });
            }

            if (!req.headers.has('Content-Type')) {
                req = req.clone({ headers: req.headers.set('Content-Type', 'application/json') });
            }

            req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
            return next.handle(req);
        }
}

products.component.ts

getAll() {
    return this.httpClient.get<any>(this.url).map(response => response.json());
    }
4

1 に答える 1