Nové výhodné předplatné namísto kreditů je tu! Více informací. Upravili jsme také naše provozní podmínky.
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. 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.

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íš s Provozními podmínkami.

Co od nás v dalších lekcích dostaneš?
  • Přístup k jednotlivým lekcím dle způsobu pořízení.
  • 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.
Článek pro vás napsal Martin Macura
Avatar
Aktivity