Winkel 9 - Typoskript - headers.set - Header wird nicht hinzugefügt

Oct 02 2020

Ich versuche, einen Winkelinjektor zu verwenden, um einen Inhaber-Token hinzuzufügen

Obwohl der Code ausgeführt wird, wird der Header nicht hinzugefügt

Es gibt viele verschiedene Codes, ich habe einige ausprobiert, sie führen alle zum gleichen Problem

Mit der Anfrage wird kein Inhaber gesendet

Im folgenden Bild habe ich bei clone / headers.set angehalten , aber auch nach diesem Schritt ist die Header-Map noch leer

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
  constructor(
    private appService: AppService
  ) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // add auth header with jwt if user is logged in and request is to the api url
    let authentication: Authentication = this.appService.getUserSession();

    const isLoggedIn = authentication && authentication.token;
    const isApiUrl = request.url.startsWith(environment.apiUrl);

    //------------------------------------- add id's
    let body = request.body;
    if(!body)
    {
        body={};
    }
    body['clientId'] = environment.clientId;
    body['clientSecret'] = environment.clientSecret;

    request = request.clone({
        body: body
    });

    //--------------------------------------- add jwt

    if(authentication)
    {
        request = request.clone(
            {
                headers: request.headers.set('Bearer', authentication.token)
            }
        );
    }

    return next.handle(request);
  }
}

Danke, dass du mir dabei geholfen hast

Antworten

1 Adjunta Oct 02 2020 at 10:01

Gemäß dem Prototyp der clone () -Methode haben Sie eine Objekteigenschaft zum Festlegen von Headern erhalten (mit dem Namen setHeaders).

setHeaders?: {
            [name: string]: string | string[];
        };

Sie sollten wie folgt vorgehen

 request = request.clone(
         {
            setHeaders: {
                Authorization: `Bearer ${authentication.token}`
            }
         }
    );