Lekce 14 - Zabezpečení endpointů v Node.js na roli administrátora
V minulé lekci, Přihlášení a odhlášení uživatelů v Node.js, jsme naprogramovali přihlášení, odhlášení a výpis uživatelů pomocí Express session.
V tomto Node.js tutoriálu přidáme autorizaci na roli administrátora na endpointy našeho API, které upravují data a tudíž by neměly být veřejné.
Route handlers
Route handler je funkce, která se provede před
zpracováním požadavku u zvolených endpointů. Doteď jsme si
ukazovali zpracovávání požadavku pouze jedním callbackem. Těchto
callbacků ale může být více a říká se jim právě route handlers.
Každý v řadě může rozhodnout, zda se má zavolat ten další, nebo zda
již můžeme odpověď na požadavek odeslat zpět klientovi. Máme tak
skvělou příležitost nevykonat další obsluhu endpointu v
případě, že se uživatele nepodaří autorizovat. Další handler
zadáváme jako parametr route handleru (většinou je nazvaný
next
).
requireAuthHandler()
- Handler na přihlášené uživatele
Pojďme si vytvořit takový route handler, který nepustí požadavek dál v případě, že uživatel není přihlášený. Následující funkci si přidejme k validačním funkcím:
const requireAuthHandler = (req, res, next) => { const user = req.session.user; if (!user) { res.status(401).send("Nejprve se přihlaste"); return; } User.findById(user._id) .then((user) => { if (user === null) { req.session.destroy((err) => { if (err) { res.status(500).send("Nastala chyba při autentizaci"); return; } res.status(401).send("Nejprve se přihlaste"); }); return; } next(); }) .catch(() => { res.status(500).send("Nastala chyba při autentizaci"); }); }
Pokud v dané session neexistuje objekt user
, uživatel není
přihlášený a API vrátí odpověď, že je nutné se nejdříve přihlásit.
V opačném případě handler
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Před koupí tohoto článku je třeba koupit předchozí díl
Obsah článku spadá pod licenci Premium II, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V Node.js tutoriálu naprogramujeme v JavaScriptu zabezpečení endpointů API na roli administrátora pomocí route handler.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.