مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

مشکل در ثبت نام با استفاده از asp.net identity

دوشنبه, 10 تیر 1398 15:35

مشکل در ثبت نام با استفاده از asp.net identity

با سلام و خسته نباشید

زمان ثبت نام کاربر با استفاده از idenitty بدون هیچ مشکلی ثبت نام بطور کامل انجام میشه اما فیلد passwordHash مقدار null ثبت میشه البته از هر 3 ثبت نام یکیش به همین منوال هست

همچنین در زمان ورود پس از submit شدن فرم و بررسی نام کاربری و رمز عبور با استفاده از SignInManager و متد PasswordSignInAsync مقدار فیلد passwordHash برابر null میشه

لطفا در این زمینه راهنمایی کنین خیلی ممنون

ﺳﻪ شنبه, 11 تیر 1398 12:55

سلام

لطفا کدتون رو بزارید تا بیبنیم

ﺳﻪ شنبه, 11 تیر 1398 13:15

register code

var role = "user";
            var count = await _userRepository.CountUsers(a => true);
            role = count == 0 ? "admin" : "user";
            user = await _userRepository.CreateUser(model, role);
            if (user == null)
            {
                _alert.SetAlert(false, "لطفا مجددا تلاش نمایید");
                return RedirectToAction("Register");
            }

کد مربوط به createuser در userRepository

public async Task<ApplicationUser> CreateUser(UserViewModel userModel, string roleName = "user")
        { 
            var user = new ApplicationUser()
            {
                UserName = userModel.UserName,
                Email = userModel.Email,
                            .............
            };
            var userIdentity = await _manager.CreateAsync(user, userModel.Password);
            if (!userIdentity.Succeeded)
                return null;
            await CreateRole(user.Id, roleName);
            return user;
        }

کد مربوط به ورود

  private SignInManager<ApplicationUser, string> SignInManager =>
            HttpContext.GetOwinContext().Get<SignInManager<ApplicationUser, String>>();


var signInResult =
                await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.Remember, false);
            switch (signInResult)
            {
                case SignInStatus.Success:
                    if (User.IsInRole("admin"))
                        return RedirectToAction("Index", "Dashboard", new { area = "Admin" });
                    if (User.IsInRole("user"))
                        return RedirectToAction("Index", "Dashboard", new { area = "User" });
                    _alert.SetAlert(false, "نام کاربری و رمز عبور اشتباه میباشد");
                    break;
                case SignInStatus.Failure:
                    _alert.SetAlert(false, "نام کاربری و رمز عبور اشتباه میباشد");
                    break;
                case SignInStatus.LockedOut:
                    _alert.SetAlert(false, "شما بیش از حد تعداد مجاز برای ورود تلاش نموده اید لطفا بعدا مراجعه نمایید");
                    break;
            }
            return RedirectToAction("Index");

ﺳﻪ شنبه, 11 تیر 1398 13:33

مهندس نصیری عزیز لازم به ذکر است همناطور که در کد هم نوشته شده در زمان login بعد از غیرفعال کردن locked out با مقدار false مشکل برطرف میشود ولی خیلی جالب است که در این حالت پسورد حذف نشده ولی برای اولین بار که کاربر اقدام به ورود میکند با اینکه role او از قبل مشخص میباشد ولی تابع User.IsInRole نقش کاربر را پیدا نمیکند

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید