یک برنامهٔ سادهٔ جاوااسکریپت بنویسید که پس از ورود کاربر توکن 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 استفاده کنید تا امنیت بالاتری داشته باشید.

توسط پژوهشگر در 221 روز قبل ساعت 01:13
دسته بندی ها: JavaScript JavaScript for beginner
nima در 221 روز قبل ساعت 14:06

برای امنیت بهتر، ذخیرهٔ JWT در localStorage را تنها در صورت نیاز انجام دهید و در استفادهٔ عملی از HttpOnly cookies با Refresh Token استفاده کنید. یک wrapper مانند apiFetch بسازید که قبل از هر درخواست، توکن را با decode پایه بررسی کند و اگر exp منقضی شده بود کاربر را به صفحهٔ ورود هدایت کند و در غیر این صورت Authorization: Bearer را اضافه کند. همچنین هر بار که پاسخ 401 برمی‌گردد، کاربر را به صفحهٔ ورود ارجاع دهید و توکن را از localStorage پاک کنید. در نظر بگیرید که این رویکرد برای تمرین‌های ساده مناسب است اما در اپ‌های واقعی باید از مکانیزم‌های امنیتیِ قوی‌تر مانند HttpOnly cookies و Refresh Token استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری