JWT 403 w przeglądarce

JWT 403 w przeglądarce
SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

Co moze byc przyczyna takiej kolei rzeczy, że w postmanie jak testuje rozne endpointy to nigdy nie wywala mi bledu 403,a gdy chce wywolac te same endpointy angularem w przegladarce to wtedy go dostaje?? Dzieje sie tak u mnie w modelu dotyczacym panelu admina, dokladnie taki sam kod mam jak jakis czas temu kiedy to wszystko mi dzialalo poprawnie. teraz gdy probuje usunac uzytkownika badz go zbanowac wyskakuja mi 403 w przegladarce a w postmanie bez problemu dziala. kod sprawdzalem duzo razy i nie ma z nim problemow raczej, chyba ze sa jakies ,,smaczki" o ktorych nie wiem i z ktorymi mi pomozecie :) w request headerze, czyli tam gdzie powinien sie znajdowac token, przy tych endpointach ktore wywoluja 403 wlasnie sie nie znajduje...w local storage juz jest, jakies pomysly :)?

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
0

w request headerze, czyli tam gdzie powinien sie znajdowac token, przy tych endpointach ktore wywoluja 403 wlasnie sie nie znajduje

Odpowiedź jest prosta: w takim razie weź ten header dodaj.

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

header jest dodany, gdyby nie byl dodany to zaden endpoint by nie dzialal i nie mial jwt w request headerze a tak to wiekszosc dziala tylko w niektorych przypadkach nie ma tego w headerze

TY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 204
0

To pewnie header ma złą wartość w "niektórych przypadkach"

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 84
0

kod z frontu :
interceptor:

Kopiuj

intercept(request: HttpRequest<any>, next: HttpHandler) {
    const authHeader = AUTHORIZATION_HEADER;
    const accessToken = this.authService.getAuthorization();

    if (accessToken !== null) {
      request = request.clone({
        headers: request.headers.set(authHeader, accessToken),
        withCredentials: false
      });
    }

    return next.handle(request);
  }
}

auth service:

Kopiuj


  login(userCredentials: UserCredentials): Observable<any> {
    return this.http
      .post<AccountInfo>(`${API_URL}/login`, userCredentials, { observe: 'response' })
      .pipe(
        tap((response: HttpResponse<AccountInfo>) => {
          const token = response.headers.get(AUTHORIZATION_HEADER);
          this.storeAuthorization(token);

          const body = response.body;
          this.storeAccountInfo(body);
        })
      );
  }

  getAuthorization(): string {
    return localStorage.getItem(AUTHORIZATION_KEY);
  }

  private storeAuthorization(authToken: string) {
    localStorage.setItem(AUTHORIZATION_KEY, authToken);
  }

  private storeAccountInfo(accountInfo: AccountInfo) {
    localStorage.setItem(USERNAME_KEY, accountInfo.username);
    localStorage.setItem(ROLE_KEY, accountInfo.role.toString());
  }

screenshot-20190403115807.png
screenshot-20190403115830.png

request inny ktory dziala :
screenshot-20190403115901.png

piotrpo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3300
0

Naiwnie zakładając, że kody błędów są z sensem, to 403 z zabezpieczonego endpointa oznacza, że JWT jest w porządku (bo gdyby nie był, to powinno polecieć 401), ale identyfikowany nim użytkownik nie ma uprawnień do tego end pointa. Szukałbym po stronie serwera.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.