にasp.netメンバーシッププロバイダーでハッシュパスワードを変更する方法を私はコードaccrossに来ましたパスワード。 ランダムなパスワードを生成するリセット機能を追加したいと思います。 は、特定のクライアントにuseridとランダムに生成されたパスワードを持つ電子メールを送信します。その後、パスワードを変更することができます。はリセット&MVC
答えて
あなたがあなた自身の塩を作成し、新しいパスワードをハッシュする必要がある場合Membership GeneratePassword方法
string password = System.Web.Security.Membership.GeneratePassword(14, 0);
を使用して、このようなランダムなパスワードを生成することができ、ここで多くの会員コードと同じこと実装です:
public class Cryptographer : ICryptographer
{
#region ICryptographer Members
public string CreateSalt()
{
byte[] data = new byte[0x10];
new RNGCryptoServiceProvider().GetBytes(data);
return Convert.ToBase64String(data);
}
/// <summary>
/// Hash the password against the salt
/// </summary>
/// <param name="pass">Plain password</param>
/// <param name="salt">Salt string</param>
/// <returns>Encrypted password</returns>
public string HashPassword(string password, string salt)
{
byte[] bytes = Encoding.Unicode.GetBytes(password);
byte[] src = Convert.FromBase64String(salt);
byte[] dst = new byte[src.Length + bytes.Length];
byte[] inArray = null;
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
HashAlgorithm algorithm = HashAlgorithm.Create(System.Web.Security.Membership.HashAlgorithmType);
inArray = algorithm.ComputeHash(dst);
return Convert.ToBase64String(inArray);
}
#endregion
}
最初のものは簡潔ではるかに優れていますが、どのようなabtはハッシュパスワードを変更するのですか? –
これは、データベースに直接保存する必要がある場合、または独自のプロバイダを作成する場合に使用します。あなたは、あなたが何をしているかに応じて、これなしでも可能です。 – CRice
yeh私はdbに直接保存しますが、ユーザーはリセット後にパスワードを変更できます。 –
ChangePassword
方法の第二のparemeterは、あなたがそのユーザーのために使用したい新しいパスワードをreprisents文字列です。
これは、ユーザーに電子メールで送信する自動生成文字列であっても、任意の文字列に変更できます。あなたの新しい質問に答えるために
UPDATE
、私は、パスワードなどのすべてのハッシュは、メンバーシッププロバイダーによって処理されていることを信じています。
単純にユーザーのパスワードをランダムな新しい値にリセットする場合は、ChangePassword
の代わりにResetPassword
メソッドを使用する方がよい場合があります。
この意志:
新しい、自動的に生成されたパスワードとユーザーのパスワードをリセットします。
Yehしかし、ランダムなパスワードは親切ではありません。私が望むのは、パスワード変更機能をユーザーに提供して、パスワードをより読みやすいものに変更できるようにすることです。 –
- 1. MVCリセットExceptionContext.Resultを回避するには?
- 2. javascriptでイメージの寸法をリセットするには? (MVC)
- 3. リセット指数は
- 4. コントローラで処理されたSpring MVCで@ModelAttributeをリセットするには?
- 5. キーワードとアプリケーションのリセットをリセットします。
- 6. バンドルラーパスをリセットするには
- 7. JLabelをリセットするには
- 8. シングルトンインスタンスをリセットするには?
- 9. リセットIRBコンソール
- 10. UIStepperのリセット
- 11. ComponentArtグリッドOnKeyPressリセット
- 12. リセット値問題
- 13. ローカルワークスペースのリセット
- 14. iPhoneアプリケーションのリセット
- 15. カスタムカラーテーブルのリセット
- 16. setInterval - JavaScriptのリセット
- 17. リセットrateitの星
- 18. Androidフォームのリセット?
- 19. java.net.SocketException:接続リセット
- 20. whileループのリセット
- 21. AndroidのリセットDialogFragment
- 22. JSFリセットのテキストフィールド
- 23. phpMyAdminのリセット
- 24. アップロードのリセット
- 25. HTML5キャンバス "リセット" fillStyle
- 26. WebGL Three.jsとCSSリセット
- 27. jquery UI datepickerリセット日
- 28. Android - ViewPagerスクロールのリセット
- 29. エンタープライズアーキテクトのリセット設定
- 30. VBscript/WscriptでTelnetリセット
わかりません。これは、ユーザーのパスワードを「パスワード」に設定しています。それはどこにでも入力できる文字列か、サイトの「パスワードを変更する」セクション(おそらく電子メールのリンクから)に入る前にユーザーに電子メールで送られるハードコードされた文字列です。 –
orytだから、 "password"を使う代わりに、次のようなものを使うことができます:string newPassword = Membership.GeneratePassword(8、2); newpassword –
ええと正確に... –