JWT müddəti bitdikdən sonra bir istifadəçini avtomatik olaraq necə çıxartmaq olar

Unsplash-də Mahdis Musavi-nin şəkli

Beləliklə, bir neçə dərs oxumusunuz, bəlkə sənədləşməyə bir az dalmısınız və bir müddət keyfiyyətli kodlaşdırma müddəti bitdikdən sonra bir başlanğıc kimi arzulamaq üçün gözəl bir ilk Bucaqlı tətbiqetmə əldə etdiniz. NodeJS ilə hazırlanmış bir gerilim hissəsi kimi bir giriş sistemi? yoxsa Bahar?

Hər şey işləyir, görünür, gözləyin, JSON Veb Tokeninin müddəti bitdi, amma yenə də qorunan görünüşə baxırsınız. Çox güman ki, böyük bir şey deyil, istifadəçi gerçəklə qarşılıqlı əlaqə qura bilməz, çünki əlamətin müddəti bitib, amma əmin olmaq üçün cilalanması lazım olan bir detaldır. RxJS daxil edin.

Bunu kodlaşdırmış olsanız, artıq RxJS-ə toxundunuz və ətrafınızda bir dəstə müşahidəçi gördünüz. Həqiqətən deyilsə, burada layihənin veb saytından sürətli bir tərif var:

RxJS, asinxron və ya geri çağırışa əsaslanan kodu tərtib etməyi asanlaşdırmaq üçün müşahidəçilərdən istifadə edərək reaktiv proqramlaşdırma üçün kitabxanadır.

Xilasetmə xidmətləri

Xüsusi bir autent xidmətində Həqiqət məntiqinizin olacağını güman edirəm. Bunun səbəbi, istifadəçi statusunun tək bir komponentdən asılı olmamasıdır.

Əlavə etmədən bəzi kodlara baxaq.

İstifadəçi Doğrulama axını

Bu nümunə tətbiqetmədə, əsas 3 addım Auth axını var, istifadəçi daxil olur (proqram JWT-nin bir yerində saxlanılır), istifadəçi qorunan marşrutlar / görüşlərdən istifadə edərək arxayınlıqla qarşılanır (Http sorğuları tutulur və Avtorizasiya başlığı əlavə olunur) onlara) və nəhayət, ilk gələn hər hansı bir istifadəçi çıxır və ya JWT müddəti başa çatır.

Giriş məntiqi

Giriş komponentimizdən istifadəçi etimadnaməsini geriyə göndəririk. Hər şey qaydasındadırsa, sonra JWT və istifadəçi adını Sessiya Storage-də saxlayan storeUserData () metoduna zəng edirik, bu işarənin bitməməsi üçün qalan vaxtı hesablayır və nəhayət expirationCounter () işimizi götürməyə çağırırıq.

JWT bitmə sayğacının məntiqi

İndi reaksiya vermək üçün bitməli olanı gözləməklə məşğul olaq. Birincisi, əvvəlki abunəliklərdən yaxa qurtarmaq istəyirik. Biz abunə olmağa zəng edərək, sinifdə müəyyən etdiyimiz abunəçiliyi, bağışlanmağı bağışlayırıq.

Sonra yenisini yaradırıq, saxta müşahidə edilə bilən '(null)' keçərək başlayacağıq, oradan JWT-nin sona çatması üçün qalan vaxtın dəqiq bir müddətini gecikdirəcəyik və nəhayət, bu baş verdikdə çıxış metodumuzu çağırırıq və istifadəçini giriş səhifəsinə yönləndiririk.

Çıxış məntiqi

Çıxış metodunda əvvəlcə hər hansı bir davam edən abunədən imtina etdiyimizə əminik, məsələn istifadəçi sessiya müddəti bitməmişdən əvvəl çıxdı və nəhayət sinif xüsusiyyətləri və Sessiya saxlamasını bütün sessiya ilə əlaqəli məlumatlardan təmizləyirik.

Əlavə məlumat üçün sənədləri nəzərdən keçirin və ya RxJS üçün nümunələr, izahatlar və mənbələr olan bu super faydalı təlimatı daha yaxşı əldə edin.

Oxuduğunuz üçün təşəkkür edirəm.