Как сбросить пароль с помощью UserManager ASP.NET MVC 5
мне интересно, есть ли способ сбросить пароль с помощью UserManager of ASP.NET MVC 5
Я пробовал это с пользователем, у которого уже есть пароль, но безуспешно. Есть зацепки?
IdentityResult result = UserManager.AddPassword(forgotPasswordEvent.UserId.ToString(), model.ConfirmPassword);
if (result.Succeeded)
{
       //
}
else
{
        AddErrors(result);
}
            7 ответов
здесь ASP.NET тож сбросить пароль
UserManager<IdentityUser> userManager = 
    new UserManager<IdentityUser>(new UserStore<IdentityUser>());
userManager.RemovePassword(userId);
userManager.AddPassword(userId, newPassword);
Я полагаю, что это новее, но есть такой API в Identity 2.0:
IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
модель.Код генерируется следующим образом, и вы должны отправить это как ссылку по электронной почте, чтобы убедиться, что пользователь, который утверждает, что хочет изменить пароль, является владельцем адреса электронной почты:
string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
попробуйте использовать хранилище пользователя:
 var user = UserManager.FindById(forgotPasswordEvent.UserId);
 UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();
 store.SetPasswordHashAsync(user, uManager.PasswordHasher.HashPassword(model.ConfirmPassword));
IdentityMembership классный, но все же отсутствует некоторая реализация
обновление
Identity 2.0 теперь здесь и имеет гораздо больше возможностей
Я добавил Это в свой класс 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;
    }
попробуйте этот код .Он работает отлично:
    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);
есть расширение для изменения пароля в пространстве имен Microsoft.сеть САШ.Тождественность.
https://msdn.microsoft.com/en-us/library/dn497466 (v=против 108).aspx
var validPass= await userManager.PasswordValidator.ValidateAsync(txtPassword1.Text);
if(validPass.Succeeded)
{
    var user = userManager.FindByName(currentUser.LoginName);
    user.PasswordHash = userManager.PasswordHasher.HashPassword(txtPassword1.Text);
    var res= userManager.Update(user);
    if(res.Succeeded)
    {
        // change password has been succeeded
    }
}