MembershipProviderでかなり厄介な問題だと思うことがわかりました...他の誰かがすでにこれに遭遇し、エレガントに解決したことを願っています。
管理目的(監査、強制リセットなど)で保存できるように、パスワードを変更しながらパスワード強度を計算するメソッドを作成しました。プレーンテキストのパスワードは保存したくないので、この値は次のようにする必要があります。パスワード変更時に計算されます。
さらに悪いことに、私は既存のコードベースにこの改善を加えており、特定のプロジェクトに触れないようにし、可能な場合は小さな構成変更を優先しています。メンバーシッププロバイダーを呼び出すコードは、次の順序で呼び出します。
GetUser ChangePassword UpdateUser
残念ながら、ChangePasswordの後にUpdateUserを呼び出すと、更新が失われます。私には、これはプロバイダー構造の根本的な欠陥のように思えます。パスワードを検証するにはChangePasswordが必要ですが、UpdateUserにはどの変更が行われたかを知る方法がありません。
他の誰かがこの問題に遭遇しましたか?
注:パスワードの変更ワークフローを分離して、UpdateUserを完全に回避できることを理解しています。既存のコードベースの将来のバージョンで更新される可能性のある既存のコードブロックを完全に置き換える必要があるため、これを行わないようにしています。