私はクラブのウェブサイトのための管理者作品を作っています。管理者権限を持つユーザーがユーザーのパスワードをリセットできるようにする必要があります。また、私たちのシナリオでは、電子メールでパスワードをリセットする代わりに、現在のパスワードが何であるかをユーザーに伝える方が簡単なので、ユーザーのパスワードをクリアテキストで見ることができるように管理者に伝えたいと思う。私は、電子メールの確認で2つの要素の認証を行うことは、これを行うより安全な方法であることを知っていますが、少なくとも今のところは、ユーザーのやりとりや確認の電子メールに対処したくありません。私は、必要に応じてパスワードを直接リセットすることができるだけでなく、パスワードを見ることができるように管理者が必要です。Asp.Net ID 2パスワードクリアテキストをリセットできませんでしたか?
私はついにこれを行うためのコードを思いついたと言われています。ただし、IdentityでResetPasswordAsyncメソッドを使用すると、AspNetUsersテーブルのPasswordClearTextフィールドが更新されないようです。私は、パスワードを変更し、ログオフし、新しいパスワードでログオンしてから、PasswordClearTextに元のパスワードがあることを確認して、これを確認しました。
PasswordClearTextをリセットする方法はありますか?ここで
は私のコードクリアテキストでパスワードを保存する
[HttpPost]
[ValidateAntiForgeryToken]
public async System.Threading.Tasks.Task<ActionResult> PasswordReset(MemberPasswordReset model)
{
ApplicationDbContext context = new ApplicationDbContext();
UserStore<ApplicationUser> userStore = new UserStore<ApplicationUser>(context);
var UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
var user = await UserManager.FindByNameAsync(model.Username);
string resetToken = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
IdentityResult passwordChangeResult = await UserManager.ResetPasswordAsync(user.Id, resetToken, model.Password);
if(passwordChangeResult.Succeeded)
{
return RedirectToAction("Index");
}
AddErrors(passwordChangeResult);
return View();
}
私はプレーンテキストのパスワードが嫌いですが、あなたはそれを実装することに決めたようです。だから私はあなたに 'IPasswordHasher'の方向性を伝えます。 – trailmax