Odczyt tokenu Bearer z nagłówka Authorization

Odczyt tokenu Bearer z nagłówka Authorization
Gouda105
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 487
0

Witam,

uczę się dopiero Next.js i napotkałem problem. Otóż kiedy odbieram w moim endpoincie API POST nagłówek Authorization dostaję to, czego oczekuję, czyli Bearer eyJhbGciOiJIUzI.... Jednak kiedy użyję:

Kopiuj
const accessToken = req?.headers.get("Authorization");
const token = accessToken.replace("Bearer ", "");

dostaję błąd:

Kopiuj
TypeError: Cannot read properties of undefined (reading 'headers')

Co ciekawe, kiedy użyję console.log(accessToken.replace("Bearer ", "")); wyświetlane jest to, czego oczekuję, czyli JWT bez Bearer.

Co zrobić, aby z mojego accessToken wydobyć sam token? I czym może być spowodowane takie działanie?

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
Gouda105 napisał(a):

Witam,

uczę się dopiero Next.js i napotkałem problem. Otóż kiedy odbieram w moim endpoincie API POST nagłówek Authorization dostaję to, czego oczekuję, czyli Bearer eyJhbGciOiJIUzI.... Jednak kiedy użyję:

Kopiuj
const accessToken = req?.headers.get("Authorization");
const token = accessToken.replace("Bearer ", "");

dostaję błąd:

Kopiuj
TypeError: Cannot read properties of undefined (reading 'headers')

Przetłumacz ten błąd na polski: "nie można odczytać właściwości z undefined (czytając headers)".

Widocznie req jest wtedy undefined.

Gouda105
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 487
0

@Riddle: No ja wiem co to znaczy, ale dlaczego tak się dzieje? Dlaczego kiedy w console.log odczytuję to jest dobrze, ale jak już zapiszę do zmiennej to nagle magicznie nie ma żadnych nagłówków?

szatkus1
  • Rejestracja: dni
  • Ostatnio: dni
1

Za mało kontekstu. To nie fizyka kwantowa, zmienna nie może się nagle zdefiniować od obserwacji. Za to ludzie piszący w JS lubią czasem pomieszać scope'y.

FG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
1

Pamiętaj, że console.log nie działa natychmiast tylko jak Twoja przeglądarka będzie miała chwilkę czasu :) Jak logujesz obiekt to przekazujesz tam referencję do obiektu requestu, który pewnie początkowo jest undefined ale 10ms później już ma określoną wartość. Podobny rzeczy możesz zaobserować robiąc console.log na tablicy

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 141
2

Mi się wydaje, że zrobiłeś requesta bez bareara i optional zwrócił undefined, a ty nie obsłużyłeś takiego przypadku i się wywaliło.

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.