Подтвердить что ты не робот

Как reset пароль с UserManager ASP.NET MVC 5

Мне интересно, есть ли способ reset пароля с UserManager ASP.NET MVC 5

Я попробовал это с пользователем, у которого уже есть пароль, но нет успеха. Любая подсказка?

IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword);
if (result.Succeeded)
{
       //
}
else
{
        AddErrors(result);
}
4b9b3361

Ответ 1

Здесь Идентификатор ASP.NET reset

UserManager<IdentityUser> userManager = 
    new UserManager<IdentityUser>(new UserStore<IdentityUser>());

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);

Ответ 2

Я предполагаю, что это новее, но в Identity 2.0 есть такой API:

IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

model.Code генерируется следующим образом, и вы должны отправить это как ссылку в электронном письме, чтобы убедиться, что пользователь, который требует изменить пароль, является тем, кому принадлежит адрес электронной почты:

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

Ответ 3

попробуйте использовать хранилище пользователей:

 var user = UserManager.FindById(forgotPasswordEvent.UserId);

 UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();
 store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));

IdentityMembership классно, но все еще не хватает некоторой реализации

UPDATE

Идентификатор 2.0 теперь доступен и имеет намного больше функций

Ответ 4

Я добавил это в мой класс UserManager:

    public virtual async Task<IdentityResult> UpdatePassword(ApplicationUser user, string newPassword)
    {
        var passwordStore = Store as IUserPasswordStore<ApplicationUser, string>;

        if (passwordStore == null)
            throw new Exception("UserManager store does not implement IUserPasswordStore");

        var result = await base.UpdatePassword(passwordStore, user, newPassword);

        if (result.Succeeded)
            result = await base.UpdateAsync(user);

        return result;
    }

Ответ 5

Попробуйте этот код. Он отлично работает:

    var userStore = new UserStore<IdentityUser>();

    var userManager = new UserManager<IdentityUser>(userStore);

    string userName= UserName.Text;

    var user =userManager.FindByName(userName);
    if (user.PasswordHash != null  )
    {
        userManager.RemovePassword(user.Id);
    }

    userManager.AddPassword(user.Id, newpassword);