Hogyan lehet automatikusan kijelentkezni a felhasználót, miután a JWT lejár a szögletes csatornán

Fotó: Mahdis Mousavi az Unsplash-en

Tehát elolvasta néhány útmutatót, esetleg belevetette magát a dokumentációba, és némi minőségi kódolási idő eltelte után kap egy szép első szögletes alkalmazást, amely kezdőként kívánatos: Csúszós tervezés, anyagösszetevők, védett útvonalak őrökkel és bejelentkezési rendszer a NodeJS-sel készített háttérrendszer részeként? vagy tavasz volt?

Úgy tűnik, minden működik, amíg várj, amíg a JSON Web Token le nem járt, de még mindig megnézed ezt a védett nézetet. Valószínűleg nem nagy dolog, a felhasználó nem tud ténylegesen kapcsolatba lépni a háttérrel, mert nos, a token lejárt, de az biztos, hogy ez egy részlet, amelyet csiszolni kell. Írja be az RxJS-t.

Ha ezt kódolta, akkor esélye, hogy megérintettél már néhány RxJS-t, és egy csomó megfigyelhető anyagot láttál körül. Ha nem igazán, itt van egy rövid meghatározás a projekt weboldaláról:

Az RxJS könyvtár a megfigyelhető elemekkel történő reaktív programozáshoz, hogy megkönnyítsék az aszinkron vagy visszahívási alapú kódok összeállítását.

Mentési szolgáltatások

Feltételezem, hogy rendelkezik egy Auth logikával egy dedikált Auth szolgáltatásban. Ennek oka az, hogy a felhasználói állapot nem függhet egyetlen összetevőtől.

További figyelmeztetés nélkül nézzünk meg néhány kódot.

Felhasználói hitelesítési folyamat

Ebben a minta megvalósításban van egy alapvető, 3 lépésből álló Auth folyamat, ahol a felhasználó bejelentkezik (az alkalmazás valahol a JWT-t tárolja), a felhasználó védett útvonalak / nézetek segítségével lép kapcsolatba a háttérrel (Http kéréseket elfognak és egy engedélyezési fejlécet csatolunk nekik), és végül a felhasználó kijelentkezik, vagy a JWT lejár, attól függően, hogy melyik előbb történik.

Bejelentkezés logika

A bejelentkezési összetevőből elküldjük a felhasználói hitelesítő adatokat a háttérrendszerre. Ha minden rendben van, akkor felhívjuk a storeUserData () metódust, amely a JWT-t és a felhasználónevet menti a Session Storage-ba, kiszámítja ennek a tokennek a hátralévő idejét, és végül felhívja az expirationCounter () -ot a munka átvételére.

JWT lejárati számláló logika

Most foglalkozzunk a tényleges várakozás-ig-a-token-to-exp-re-reagálni. Először is meg akarunk szabadulni a korábbi előfizetésektől. Ezt úgy csináljuk, hogy felmondjuk az előfizetést, és megbocsátjuk a redundanciát, az Előfizetés tulajdonságnak, amelyet az osztályban definiáltunk.

Ezután készítünk egy újat, kezdjük el egy hamis megfigyelhető '(null)' átadásával, ahonnan pontosan azt az időtartamot vesszük figyelembe, ameddig a JWT lejár, és végül, amikor ez megtörténik, felhívjuk a kijelentkezés módszerünket, és a felhasználót átirányítjuk a bejelentkezési oldalra.

Kilépési logika

A kijelentkezés módszerében először megbizonyosodunk arról, hogy lemondunk minden folyamatban lévő előfizetésről, például a felhasználó kijelentkezett a munkamenet lejártát megelőzően, és végül töröljük az osztály tulajdonságait és a Munkamenet tárolást az összes munkamenethez kapcsolódó információról.

További információkért tekintse meg a dokumentumokat, vagy még jobb, ha ezt a szuper hasznos útmutatót példákkal, magyarázatokkal és az RxJS forrásaival látja el.

Köszönöm, hogy elolvasta.