یک برنامهٔ سادهٔ JavaScript بسازید که بعد از ورود کاربر توکن دسترسی (access token) را ذخیره کند، این توکن را در هدر Authorization برای درخواستهای بعدی ارسال کند و در صورت دریافت پاسخ 401 با استفاده از refresh token توکن جدید بگیرد و درخواست اصلی را دوباره اجرا کند.
14.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:56 0.0
برای حل این مسئله از fetch و async/await استفاده کنید: پس از موفقیت در ورود (POST به /api/login) access و refresh token را در localStorage یا sessionStorage ذخیره کنید (برای تولید کد آموزشی؛ در محیط تولید از httpOnly cookieها استفاده کنید). برای ارسال درخواستها یک تابع wrapper بنویسید که هدر Authorization: Bearer را اضافه کند، اگر پاسخ 401 برگشت refresh endpoint را با refresh token صدا بزند تا توکن جدید بگیرد، توکنها را بهروزرسانی کند و سپس درخواست اصلی را دوباره اجرا کند. نکات: از try/catch برای مدیریت خطاها استفاده کنید، از فایلها یا توابع کمکی برای خواندن/نوشتن توکنها بهره ببرید و درباره مسائل امنیتی (مثلاً ریسک XSS هنگام استفاده از localStorage) آگاه باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای امنیت، در محیط تولید بهتر است از کوکیهای HttpOnly برای نگهداری توکنها استفاده کنید تا در برابر XSS آسیبپذیر نباشد. همچنین وقتی یک درخواست با 401 مواجه میشود، فقط یک فرایند refresh اجرا شود و سایر درخواستها تا دریافت توکن جدید صف شوند تا از ایجاد درخواستهای بیثمر جلوگیری شود. مدیریت خطا با try/catch و یک wrapper محکم برای مدیریت ارورهای شبکه و احیای توکن اهمیت دارد و قبل از ارسال مجدد مطمئن شوید که expiry توکن اعتبارسنجی شده باشد. در نهایت از گردش توکن و محدود کردن دفعات تلاش refresh استفاده کنید تا ریسک سوءاستفاده کاهش پیدا کند.
گزارش