با سلام
در بخشی از پروژه خودم که با Asp.net core هست قصد دارم رمز عبور رو تغییر بدم. برای این کار در حالت عادی از دستور زیر استفاده می کنم و مشکلی هم نداره
user.PasswordHash = _userManager.PasswordHasher.HashPassword(user, "newPassword");
var result = await _userManager.UpdateAsync(user);
اما شرایط پروژه بنده کمی متفاوته. در واقع وقتی کاربری ثبت نام میکنه رمز عبورش رو شماره موبایلش قرار میدم. در بخشی از پروژه کاربر میتونه اطلاعات خودش رو ویرایش کنه. می خوام در همین بخش رمز عبور هم تغییر کنه.
یعنی تغییر رمز عبور همراه با آپدیت سایر اطلاعات کاربر هست. کدزیر رو نوشتم ولی عمل نمیکنه
public void UpdateUserInfo(UserInfoViewModel model)
{
var result = getUserID();
var currentUser = result.FirstOrDefault();
if (result.Count() != 0)
{
currentUser.FirstName = model.fisrtName;
currentUser.Family = model.Family;
currentUser.EnFamily = model.EnglishFamily;
currentUser.EnName = model.EnglishName;
currentUser.MelliCode = model.MelliCode;
currentUser.PasswordHash = model.Password;
currentUser.Email = Email;
_context.Users.Attach(currentUser);
_context.Entry(currentUser).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
_context.SaveChangesAsync();
}
}
لطفا راهنمایی کنید چرا بعد از اجرای دستورات بالا رمز عبور به صورت صحیح کار نمیکنه ؟
شما باید پسورد کاربر رو بصورت هش شده ارسال کنید به دیتابیس درواقع شما پسوردتون رو بصورت عادی دارید ارسال می کنید
همونطوری که sunboyali گفت شما دارید رمز عبور رو بدون این که رمزنگاری انجام بدید آپدیت می کنید. اول باید رمز عبور رو هش کنید بعد آپدیت رو انجام بدید. برای این کار از کدهای زیر استفاده کنید
public void UpdateUserInfo(UserInfoViewModel model)
{
var result = getUserID();
var currentUser = result.FirstOrDefault();
if (result.Count() != 0)
{
currentUser.FirstName = model.fisrtName;
currentUser.Family = model.Family;
currentUser.EnFamily = model.EnglishFamily;
currentUser.EnName = model.EnglishName;
currentUser.MelliCode = model.MelliCode;
currentUser.PasswordHash = _userManager.PasswordHasher.HashPassword(currentUser, model.Password);
currentUser.Email = Email;
_context.Users.Attach(currentUser);
_context.Entry(currentUser).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
_context.SaveChangesAsync();
}
}
توسط دستور
_userManager.PasswordHasher.HashPassword(currentUser, model.Password);
میتونید رمز عبور رو هش کنید و بعد ویرایش رو انجام بدید. ضمنا UserManager هم باید در بالای کلاس تعریف کنید
private readonly UserManager<ApplicationUsers> _userManager;
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
214
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
396
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
567
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2011
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|