0
  1. コードファースト
  2. エンティティ フレームワーク
  3. C# ビジュアル スタジオ 2012

正規表現に対してパスワードを検証するユーザー アカウント エンティティがあります。

データベースに保存する直前にパスワードをハッシュ値に変換するイベントはありますか?

私の問題は、最初にパスワードをハッシュすると、このエンティティを使用して検証できないことです。

検証を別の領域に抽出し、ハッシュ値のみをエンティティに保存することを考えました。

現在の流れは以下の通り

  1. ユーザーが新しいアカウントの詳細を入力します
  2. ユーザー アカウント エンティティが作成されました
  3. データ注釈を使用して検証されたエンティティ
  4. ハッシュされたパスワード
  5. データベースに保存されたエンティティ

パスワードハッシュをどこに配置するかについて、誰かが私を助けてくれますか

4

1 に答える 1

-1

MVCを使用している場合、私のアプローチは次のようになります-

Account クラスの Password フィールドに正規表現を入力します。

AccountController の Create メソッド内:

  1. モデルの状態が有効かどうかを確認します。これにより、正規表現とその他のすべての必須フィールドが確認されます。
  2. ハッシュ メソッドを呼び出し、既存のプレーン テキスト パスワードをアカウント オブジェクトのハッシュされたパスワードに置き換えます。
  3. データベースに保存

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            user.Password = PasswordHasher.Hash(user.Password);
            db.Users.Add(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
    
        return View(user);
    }
    
于 2013-10-21T21:56:59.207 に答える