ハッシュ化されたパスワードを(サーバー側の)セッションのユーザーオブジェクトに保存することはお勧めできませんか?言うまでもなく、特定のユーザーを認証するためにハッシュを比較するには、ソルトおよびハッシュされたパスワードを取得する必要がありますが、比較が行われると、ユーザーオブジェクトにパスワードを保持することに関連する定量化可能なセキュリティリスクがありますか?
コメントでの議論を考えると、質問の要点は、パスワードとハッシュデータがユーザーオブジェクトに格納され、残りのユーザーデータが1回のクリーンな呼び出しでデータベースから取得されるとということでした。質問を投稿する前に、もちろんリスクがあることを理解しましたが、ユーザーからフレームワークをクリアするためのフレームワークを実装することを保証するのに十分実行可能ですか、それともそうすることは良い習慣になりますか?
応答を考えると、最善の解決策は、IDによってユーザーに関連付けられているが、直接保存されていないパスワードとソルトを含む資格情報オブジェクトを用意することです。
ユーザーがログインしようとすると、ユーザーオブジェクト(パスワードデータを含まない)が電子メール/ユーザー名によってデータベースから取得されます。次に、IDが読み取られ、関連付けられた資格情報オブジェクトを取得するために使用されます。その後、パスワードの検証を行うことができます。パスワードが正しい場合、ユーザーはセッションに参加し、資格情報オブジェクトは破棄されます。
その結果、パスワードデータのないユーザーオブジェクトが作成されるため、関連する潜在的なセキュリティリスク(質問で説明されているように、最小限に抑えられます)が回避されます。もう1つの結果は、使用前にユーザーオブジェクトからパスワードデータを手動でクリアする必要がないことです。これは、毎回データをクリアする必要があるよりも信頼性の高いシステムであり、EFまたは同様のテクノロジーが使用されている場合、オブジェクトの変更がデータベースにプッシュされるときに誤ってパスワードデータを消去するリスクはありません。