دسته بندی ها
07:50 1403/03/05

مشکل در تولید توکن برای لاگین توسط jwt در Asp.net Core 7

مشخصات سوال کننده :
کاربر : najmeh1559     امتیاز کاربر : 0     رتبه کاربر : 7059
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1027
1 نظر
saedbfd : سلام. چند نکته رو عرض میکنم. اول اینکه بخش jwt در این آموزش به درستی کار میکنه و تا حالا هیچ مشکلی از خطای در این بخش نداشتیم. برای اطمینان از این موضوع شما می تونید سورس اصلی آموزش رو ران کنید و یک بار عملیات login رو انجام بدید و بررسی بفرمایید که هیچ مشکلی نداره. نکته دوم اینکه شما اگر خطایی برخورد میکنید بهتره متن خطا رو هم قرار بدید. الان با این توضیحات هیچ کس خطای شما رو به درستی متوجه نمیشه. سعی کنید متن خطایی که در مرورگر نمایش میده رو قرار بدید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 12:59 1403/03/05
هوش مصنوعی

پاسخ هوش مصنوعی

به نظر می رسد که در رندر توکن Jwt و تنظیم احراز هویت در ASP.NET Core 7 مشکل دارید. در زیر چند نکته و راهنمایی برای رفع اشکال آورده شده است:

1. اطمینان حاصل کنید که IJwtTokenGenerator به درستی پیاده سازی شده است و توکن ها به طور صحیح تولید می شوند. برای این کار ممکن است بخواهید متد تولید توکن را بررسی کنید.

2. بررسی کنید که آیا result.Result.Token در واقع توکن معتبر و غیر خالی را برمی گرداند یا خیر.

3. حتماً هنگام تولید توکن از تمام موارد مورد نیاز (مانند UserID و Roles) استفاده کنید تا به درستی در claims ذخیره شوند.

4. نحوه استفاده از توکن را در درخواست های بعدی بررسی کنید. باید اطمینان حاصل کنید که توکن در هدر درخواست ها به درستی ارسال می شود.

5. اطمینان حاصل کنید که AccountApiController به درستی در DI (Dependency Injection) پیکربندی شده باشد. می توانید بررسی کنید که کلاس های UserManager و SignInManager به درستی ثبت شده اند.

در مورد کد شما، موارد زیر را لحاظ کنید:

var claims = new List<Claim>()
{
   new Claim("Token", result.Result.Token),
   new Claim("Role", result.Result.Roles.ToString()),
   new Claim("UserID", result.Result.UserID),
   new Claim(ClaimTypes.Role, string.Join(",",result.Result.Roles))
};

var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var properties = new AuthenticationProperties
{
   IsPersistent = true,
   ExpiresUtc = DateTime.UtcNow.AddHours(6)
};
await HttpContext.SignInAsync(principal, properties);

با ترمیم و اصلاح ساختار claims و اطمینان از صحت داده ها می توانید مشکل را حل کنید. در صورت ادامه مشکل، ورودی های ورود به سیستم و دستورات مربوط به آن را نیز بررسی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mshosseini 09:35 1403/03/06

سلام

بله jwt  منم به مشکل خورد ولی با  netcore 7 هیچ مشکلی نبود زمانی که پروژه خودم که پروژه خودم رو به netcore 8 آپدیت کردم خطا پیش اومد و توکن ساخته نمیشد

مشکل زمانی حل شد که داخل فایل appsettings.json مقدار TokenKey  رو تعداد ارقام رو 2 برابر کردم یعنی تعداد کاراکتر هارو 2 برابر کردم و مشکل کاملا حل شد

به این پاسخ امتیاز بدهید    2
امتیاز: 33 رتبه: 23
1 نظر
najmeh1559 : بااحترام ممنون دقیقامشکل با افزایش TokenKey حل شد

امتیاز کاربر : 0   رتبه کاربر : 7059   تاریخ ثبت : 06:12 1403/03/14
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود