‫۴ سال و ۴ ماه قبل، شنبه ۶ اردیبهشت ۱۳۹۹، ساعت ۱۵:۲۰
- راه حل عمومی برای jQuery، React و Angular و غیره این است که جائیکه if (xhr.status === 401) را از سمت سرور دریافت کردید (401، خروجی خودکار فیلتر Authorize، در صورت شکست اعتبارسنجی است)، می‌توانید پیام خاصی و یا هدایت به صفحه‌ی خاصی را با فراخوانی دستور "window.location.href  = "/new/page/path انجام دهید.
- چرا این راه حل عمومی است؟ چون قسمت
  $.ajax({
                headers: { 'Authorization': 'Bearer ' + jwtToken },
توسط مرورگرها توسط یک post-back ساده (مانند لاگین معمولی در صفحات مبتنی بر Razor)، به سمت سرور ارسال نمی‌شود. مرورگرها فقط کوکی‌ها را به صورت خودکار ارسال می‌کنند و نه توکن‌های سفارشی را. بنابراین اگر حتی از این روش JWT در برنامه‌های MVC هم استفاده کنید، مجبور به استفاده‌ی از Ajax خواهید بود تا هدرهای سفارشی را بتوانید به سمت سرور، جهت بررسی و اعتبارسنجی نهایی ارسال کنید. قسمتی از عملیات Ajax هم بررسی شکست عملیات و واکنش نشان دادن به status code دریافتی است.
‫۴ سال و ۴ ماه قبل، شنبه ۶ اردیبهشت ۱۳۹۹، ساعت ۰۴:۵۰
مطابق جدول زیر، فقط اسمبلی مرتبط با متد الحاقی AddJwtBearer دارای بسته‌ی نیوگت 3x است و مابقی دیگر به صورت مجزایی تولید نمی‌شوند و جزئی از framework reference هستند .
 آخرین نگارش نیوگت موجود
 اسمبلی مرتبط
متد الحاقی
2.2.0  Microsoft.AspNetCore.Authorization.Policy, Version=3.1.0.0  ()AddAuthorization
2.2.0  Microsoft.AspNetCore.Authentication, Version=3.1.0.0  ()AddAuthentication
3.1.3  Microsoft.AspNetCore.Authentication.JwtBearer, Version=3.1.2.0  ()AddJwtBearer
 بنابراین نیاز به تنظیم target-framework و همچنین framework-reference هست:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
</Project>
- اگر احتمالا پروژه‌ی پیوست را اجرا کرده باشید، مشاهده کردید که پس از لاگین، یک refresh کامل صورت می‌گیرد و مشکل خاصی از این لحاظ وجود ندارد (چندین بار هم آزمایش شد).
- در پروژه‌ی سفارشی و خاص خودتان نیاز است هدرهای ارسالی به سمت سرور را در برگه‌ی network ابزارهای توسعه دهندگان مرورگر، بررسی کنید. محتوای آن را همانند روشی که در نکته‌ی «نگاهی به محتوای JSON Web Token تولیدی » عنوان شد، دقیقا بررسی کنید که آیا به همراه claims مدنظر شما هست یا خیر؟ سمت سرور فقط بر اساس این محتوا هست که سشنی را ایجاد می‌کند. اگر این محتوا ناقص باشد، اطلاعات مدنظر هم قابل استخراج نخواهند بود. همچنین آیا سمت سرور عملیات اعتبارسنجی ثانویه‌ای هم صورت می‌گیرد و آیا ساختار JWT ارسالی، اطلاعات مدنظر آن‌را تامین می‌کند یا خیر. این‌ها را باید مرحله به مرحله دیباگ کنید.
- همچنین طول عمرهای توکن‌های تولیدی را هم باید مدنظر داشته باشید. در مثال جاری، این عدد در فایل appsettings.json به 20 دقیقه تنظیم شده:
  "BearerTokens": {
    "Key": "This is my shared key, not so secret, secret!",
    "Issuer": "https://localhost:5001/",
    "Audience": "Any",
    "AccessTokenExpirationMinutes": 20
  }
در مثالی دیگر به 2 دقیقه که خیلی کوتاه است.
‫۴ سال و ۴ ماه قبل، پنجشنبه ۴ اردیبهشت ۱۳۹۹، ساعت ۱۹:۲۷
یک نکته‌ی تکمیلی: دریافت خطای CORS پس از نصب تازه‌ی NET Core SDK.
پس از نصب تازه‌ی NET Core SDK. و ارسال پیامی از طرف برنامه، ممکن است خطاهای زیر را مشاهده کنید که از طرف مرورگر به اشتباه، خطای CORS گزارش می‌شوند:
در فایرفاکس:

در کروم:

برای رفع این مشکل فقط کافی است دو دستور زیر را با دسترسی مدیریتی اجرا کنید:

dotnet dev-certs https --clean
dotnet dev-certs https --trust
تا مجوز SSL آزمایشی NET Core.، به صورت امنی به سیستم معرفی شود.
این تنظیمات، نیاز به ری‌استارت کامل سیستم را هم دارند و تا آن زمان، باز هم خطاهای یاد شده را در مرورگرها مشاهده خواهید کرد.
‫۴ سال و ۴ ماه قبل، پنجشنبه ۴ اردیبهشت ۱۳۹۹، ساعت ۱۴:۲۸

URLs in HTTP Archive with specific frameworks detected
Framework Mobile URLs Desktop URLs
jQuery 4,615,474 3,714,643
React 489,827 241,023
Vue.js 85,649 43,691
Angular 19,423 18,088
نکته‌ی مهم: نیاز به دائمی کردن کلیدهای رمزنگاری سمت سرور

اگر برنامه‌ی سمت سرور ما که توکن‌ها را اعتبارسنجی می‌کند، ری‌استارت شود، چون قسمتی از کلیدهای رمزگشایی اطلاعات آن با اینکار مجددا تولید خواهند شد، حتی با فرض لاگین بودن شخص در سمت کلاینت، توکن‌های فعلی او برگشت خواهند خورد و از مرحله‌ی تعیین اعتبار رد نمی‌شوند. در این حالت کاربر خطای 401 را دریافت می‌کند. بنابراین پیاده سازی مطلب «غیرمعتبر شدن کوکی‌های برنامه‌های ASP.NET Core هاست شده‌ی در IIS پس از ری‌استارت آن» را فراموش نکنید.

‫۴ سال و ۴ ماه قبل، دوشنبه ۱ اردیبهشت ۱۳۹۹، ساعت ۲۳:۵۶
به head فایل index.html، این تگ را اضافه کنید:
<base href="/" /> <!-- for local host -->

و یا اگر فایل‌ها را به صورت زیر به فایل index.html معرفی کرده‌اید: 
<head>
    <link rel="stylesheet" href="./style.css" ></link>
</head>
باید به این شکل اصلاح شوند:
<head>
    <link rel="stylesheet" href="/style.css" ></link>
</head>
اطلاعات بیشتر
‫۴ سال و ۴ ماه قبل، یکشنبه ۳۱ فروردین ۱۳۹۹، ساعت ۱۷:۱۱
به روز رسانی
در developer tools نگارش‌های اخیر فایرفاکس و کروم، قابلیت توکار throttling وجود دارد و برای اینکار، نیازی به نصب هیچ افزونه‌ی جداگانه‌ای نیست:
در فایرفاکس:


در کروم: