web-dev-qa-db-ja.com

ASP.NET MVC 5のUserManagerでパスワードをリセットする方法

ASP.NET MVC 5UserManagerでパスワードをリセットする方法があるかどうか疑問に思っています

すでにパスワードは持っているが成功していないユーザーでこれを試しました。どんな手掛かり?

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

ここにあります ASP.NET Identity reset password

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

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);
85
Developer

これは新しいと思いますが、Identity 2.0にはそのようなAPIがあります。

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

model.Codeは次の方法で生成されます。これをメールでリンクとして送信して、パスワードを変更したいと主張しているユーザーがメールアドレスを所有しているユーザーであることを確認する必要があります。

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
29
Yan
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
    }
}
5
Martin Staufcik

ユーザーストアを使用してみてください:

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

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

IdentityMembershipはクールですが、それでも 実装を欠いています

[〜#〜] update [〜#〜]

Identity 2.0がここにあり、さらに多くの機能があります

4
Jonesopolis

このコードを試してください。それは完全に動作しています:

    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);
3
Ganesh PMP

これを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;
    }
3
James White

名前空間Microsoft.AspNet.Identityにパスワードを変更するための拡張機能があります。

https://msdn.Microsoft.com/en-us/library/dn497466(v = vs.108).aspx

2
Marcel Melzig