avatar
محمد

کاربر

  • 1400/03/23
  • 0
  • 355
1400/03/23 |
backend

مشکل در لاگین دو مرحله ای identity

سلام من از  identity  بخش لاگین دو مرحله ای رو فعال کردم ولی موقعه لاگین روی متد PasswordSignInAsync که لاگین رو چک میکنه خطای زیر رو میده یک هفته است در گیر این خطا هستم لطفا راه حلشو کسی بلده ؟

System.AggregateException: 'One or more errors occurred. (Entity type 'IdentityUserToken<string>' is defined with a 2-part composite key, but 3 values were passed to the 'DbSet.Find' method.)'


سلام

لطفا کل کد اون متد را قرار دهید تا کدها بررسی شوند


  • 1400/03/23

اینم کد های متد 

[HttpPost]
        public IActionResult Login(LoginDto login)
        {
            if (!ModelState.IsValid)
            {
                return View(login);
            }

            var user = _userManager.FindByNameAsync(login.UserName).Result;

            _signInManager.SignOutAsync();

            if (user.EmailConfirmed == false)
            {
                return View("DisplayEmail");
            }

            var result =  _signInManager.PasswordSignInAsync(user, login.Password, login.isPersistent,true).Result;

            if (result.Succeeded == true)
            {
                return Redirect(login.ReturnUrl);
            }
            if (result.RequiresTwoFactor == true)
            {
                //بخش دو مرحله ای ورود کاربر
            }
            if (result.IsLockedOut)
            {
                //بخش قفل شدن کاربر
            }
            ModelState.AddModelError(string.Empty, "نام کاربری یا گذرواژه درست وارد نشده ");
            return View();
        }


شما قبل از اینکه پسورد را چک کنید اول ببینید کاربری پیدا شده یا نه

 

[HttpPost]
        public IActionResult Login(LoginDto login)
        {
            if (!ModelState.IsValid)
            {
                return View(login);
            }

            var user = _userManager.FindByNameAsync(login.UserName).Result;

            _signInManager.SignOutAsync();

            if (user.EmailConfirmed == false)
            {
                return View("DisplayEmail");
            }

            if (user == null)
            {
                return View("user not found");
            }

            var result =  _signInManager.PasswordSignInAsync(user, login.Password, login.isPersistent,true).Result;

            if (result.Succeeded == true)
            {
                return Redirect(login.ReturnUrl);
            }
            if (result.RequiresTwoFactor == true)
            {
                //بخش دو مرحله ای ورود کاربر
            }
            if (result.IsLockedOut)
            {
                //بخش قفل شدن کاربر
            }
            ModelState.AddModelError(string.Empty, "نام کاربری یا گذرواژه درست وارد نشده ");
            return View();
        }

 


  • 1400/03/25

اره کاربر پیدا میشه دوست عزیز 


  • 1400/03/25

اره کاربر پیدا میشه دوست عزیز 


توی databasecontext  قسمت ModelBuilder این خط و چک کن ببین همینه یا 2 تا فیلد و بهش پاس دادی

 

modelBuilder.Entity<IdentityUserToken<string>>().HasKey(p => new { p.UserId, p.LoginProvider, p.Name });


  • 1400/03/26

حل شد دوست عزیز مرسی از این که وقت گذاشتین



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری