Odczyt tokenu Bearer z nagłówka Authorization

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ę:

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

dostaję błąd:

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?

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ę:

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

dostaję błąd:

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.

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?

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.

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1