Passport, vaše vstupenka ke snadnému ověření v JavaScriptu

Pokud hledáte snadné řešení, jak se vypořádat se spolehlivou autentizací, pak jste na správném místě. Passport je sada ověřovacího middlewaru pro váš server Node.js, který vám umožňuje používat ověřování od široce oblíbených a bezpečných společností, jako je Facebook, Google, Twitter, GitHub a mnoho dalších. To vám v konečném důsledku ušetří spoustu práce, protože se budete muset zabývat bezpečností ukládání uživatelských dat, a uživatelům se zbavíte starostí s vytvářením nového účtu.

Předletové kontroly

Nejprve si nastavte svou souborovou základnu, základní frontend, databázi a server Node.js. K tomu doporučuji používat Express, protože je opravdu snadné nastavit. Doporučuji také nastavit samostatný soubor pro řešení vašich ověřovacích tras, protože proces ověřování bude poměrně izolovaný. Pokud se mnou chcete pokračovat, použiji pro pas strategii passport-google-oauth20. A nakonec se ujistěte, že si jdete získat přihlašovací údaje pro ověření z jakékoli služby, kterou jste si vybrali. Zde je ten pro google, který používám.

Vzlet

Dobře, první krok, vyžadujte pas v souboru hlavního serveru spolu s analyzátorem souborů cookie. Díky tomu bude práce s cookies hračkou. Dobře, teď to necháme na minutu, abychom mohli nastavit naši strategii v samostatném souboru. Zde jsou požadavky, které chcete pro tento soubor:

Zde přinášíme náš uživatelský model z nastavení naší databáze, protože v nastavení naší strategie mu říkáme, co má dělat s informacemi o profilu, které získal z Googlu, nebo s jakoukoli jinou strategií, kterou si vyberete. Dále použijeme naši strategii v Passportu pomocí, uhodli jste, passport.use() takto:

První argument strategie je objekt s koncovým bodem, na který má přihlášení uživatele přesměrovat, a clientID a clientSecret, které jste získali od google (nebo jiné služby). Druhý argument je funkce pro to, co dělat s informacemi, které autentizace posílá zpět. Parametry accessToken a refreshToken této funkce budeme prozatím ignorovat, protože nejsou nutné pro základní autentizaci. Dalším krokem je ověřit, zda uživatel, který se přihlásil, je již ve vaší vlastní databázi, a pokud ne, vytvořit si ji pomocí profilových informací, které jste od něj získali při přihlášení. a nakonec posledním krokem pro něj je ujistit se, že zavoláte další funkce s uživatelem, který se přihlásil jako druhý argument, protože konec konců máme co do činění s middleware.

Cesta

Udělejte si čas, užijte si učení. Cesta před cílem

Přistání

Dobře, je čas vrátit se k našemu souboru hlavního serveru. Zde nastavíme dvě věci, nejprve naše cookieSession takto:
to nám umožňuje uložit identifikátor relace jako soubor cookie k odeslání zpět klientovi. A druhá věc, kterou musíme udělat, je inicializovat náš pas, abychom mohli serializovat a deserializovat uživatelská data z požadavku takto:
Aby to plně fungovalo, musíme přidat jednu poslední věc zpět do našeho souboru, kde jsme nastavili naši strategii, a to je skutečná serializace a deseralizace dat, která získáváme takto:
serializeUser je poměrně jednoduchý, vezme si uživatele a my zavoláme next se specifickým identifikátorem, který chceme serializovat od uživatele, a deserializeUser vezme id a provede opačný proces, takže chceme v naší databázi vyhledat uživatele s odpovídajícím identifikátorem.
A nakonec na konci naší cesty musíme nastavit několik užitečných cest, jak se vypořádat s ověřováním takto:
Máme /logout koncový bod, který musí volat req.logout , funkce vložená na žádost passportem, která odstraní vlastnost req.user a funkčně odhlásí uživatele. Máme hlavní přihlašovací cestu, kterou jsem nastavil na /google koncový bod a vše, co potřebuje, je spustit passport.authenticate() middleware určující, jakou strategii použít, v mém případě je to google, a mám také objekt s klíčem rozsahu, to určuje rozsah toho, k čemu máte přístup z přihlášení, a je specifické pro poskytovatele, takže se budete muset podívat na dokumentaci strategie.

Tada

Vše hotovo. Zde máte základní nastavení pro ověřování. Nyní se bavte ještě více do hloubky se svou zvolenou strategií s pasem s veškerou dokumentací na jejich úžasné webové stránce!