IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Znalosti v hodnotě stovek tisíc získáš za pár korun

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

Koupit všechny aktuálně dostupné lekce s funkcí odevzdávání úloh a certifikátem za pouhých 460 Kč
Aktuální stav konta 0 Kč
Koupí tohoto balíčku získáš přístup ke všem 16 článkům (15 lekcí, test) tohoto kurzu.

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.

Co od nás v dalších lekcích dostaneš?
  • 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íť.

Článek pro vás napsal Martin Macura
Avatar
Aktivity