MembershipUser.ResetPassword() の呼び出しによって自動的に生成されるパスワードの形式を制御することはできますか?
生成されたパスワードで特定の特殊文字を許可または禁止できるようにしたいと考えています。
パスワード形式が Hashed の SqlMembershipProvider を使用しています。
ありがとう。
MembershipUser.ResetPassword() の呼び出しによって自動的に生成されるパスワードの形式を制御することはできますか?
生成されたパスワードで特定の特殊文字を許可または禁止できるようにしたいと考えています。
パスワード形式が Hashed の SqlMembershipProvider を使用しています。
ありがとう。
Mark Fitzpatrickがここで特定しているように、これを2つのステップで実行することをお勧めします:http://bytes.com/groups/net-asp/689452-how-reset-users-password-without-having-use-passwordrecovery#post2740740
最初にパスワードをリセットし、すぐに好みの形式に変更します。明らかに、Markの例のように固定文字列を使用することはお勧めしません。ランダムな文字列ジェネレータを実装する必要があります。
user.ChangePassword(user.ResetPassword(), MyMethodToGenerateRandomPassword());
現在、このメソッドを使用して、次のように Web.config で既に定義されているプロパティMembership.GeneratePassword
を渡したり使用したりすることもできます。MinRequiredPasswordLength
var newPassword =
// 0 = Number of non alphanumeric characters
Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0);
user.ChangePassword(user.ResetPassword(), newPassword);
この記事をご覧ください-SqlMembershipProviderで自動生成されたパスワード形式を変更します。
SqlMembershipProviderをハックして、それほど複雑でないパスワードを生成する簡単な方法を思いつきました。それは、SqlMembershipProviderから継承する新しいプロバイダークラスを作成し、GeneratePasswordメソッドをオーバーライドするのと同じくらい簡単でした。
これは完全に解決された解決策ではありませんが、役立つ場合があります。
いくつかの構成設定で使用できることを期待していましたが、GeneratePassword()メソッドをオーバーライドすることは私の状況では機能します。
ランダムなパスワード文字列を生成する暗号ユーティリティクラスがすでにあるので、かなり迅速な変更でした。