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

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

کاربر سایت

payam64

عضویت از 1397/01/14

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

  • دوشنبه 10 تیر 1398
  • 15:35
تشکر میکنم

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

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

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

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

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • سه شنبه 11 تیر 1398
  • 12:55

سلام

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

کاربر سایت

payam64

عضویت از 1397/01/14

  • سه شنبه 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");

کاربر سایت

payam64

عضویت از 1397/01/14

  • سه شنبه 11 تیر 1398
  • 13:33

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)