یک برنامهٔ سادهٔ جاوااسکریپت بنویسید که پس از ورود کاربر توکن JWT را از سرور دریافت و در localStorage ذخیره کند، برای درخواستهای بعدی هدر Authorization: Bearer را همراه توکن بفرستد و در صورت منقضی شدن توکن کاربر را به صفحهٔ ورود هدایت کند
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:13 0.0
برای حل این مسئله یک فرم ورود بسازید که با fetch به یک مسیر /login درخواست میفرستد و توکن JWT را از پاسخ میگیرد؛ توکن را در localStorage ذخیره کنید و یک تابع کمکی apiFetch بنویسید که قبل از ارسال هر درخواست وجود و تاریخ انقضای توکن را (با decode کردن payload: JSON.parse(atob(token.split('.')[1])) و بررسی فیلد exp) بررسی کند، سپس هدر Authorization: Bearer را اضافه نموده و درخواست را ارسال کند. نکات: برای بررسی انقضا میتوانید قبل از هر درخواست یا با setInterval چک کنید، در تمرینهای ساده localStorage پذیرفته است اما در اپهای واقعی از کوکی HttpOnly و مکانیزم Refresh Token استفاده کنید تا امنیت بالاتری داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای امنیت بهتر، ذخیرهٔ JWT در localStorage را تنها در صورت نیاز انجام دهید و در استفادهٔ عملی از HttpOnly cookies با Refresh Token استفاده کنید. یک wrapper مانند apiFetch بسازید که قبل از هر درخواست، توکن را با decode پایه بررسی کند و اگر exp منقضی شده بود کاربر را به صفحهٔ ورود هدایت کند و در غیر این صورت Authorization: Bearer را اضافه کند. همچنین هر بار که پاسخ 401 برمیگردد، کاربر را به صفحهٔ ورود ارجاع دهید و توکن را از localStorage پاک کنید. در نظر بگیرید که این رویکرد برای تمرینهای ساده مناسب است اما در اپهای واقعی باید از مکانیزمهای امنیتیِ قویتر مانند HttpOnly cookies و Refresh Token استفاده کنید.
گزارش