22

C# データ モデルのカスタム セッターを作成する方法がわかりません。シナリオは非常に単純です。パスワードを SHA256 関数で自動的に暗号化する必要があります。SHA256 関数は非常にうまく機能します (これまでに膨大な数のプロジェクトで使用してきました)。

私はいくつかのことを試しましたが、実行update-databaseすると、再帰的に何かを実行しているように見え、Visual Studio がハングします (エラーを送信しないでください)。モデルでデフォルトでパスワードを暗号化する方法を理解するのを手伝ってください。

私がすでに試したことをコード化する

public class Administrator
{
    public int ID { get; set; }
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password
    {
        get
        {
            return this.Password;
        }

        set
        {
            // All this code is crashing Visual Studio

            // value = Infrastructure.Encryption.SHA256(value);
            // Password = Infrastructure.Encryption.SHA256(value);
            // this.Password = Infrastructure.Encryption.SHA256(value);
        }
    }
}

シード

context.Administrators.AddOrUpdate(x => x.Username, new Administrator { Username = "admin", Password = "123" });
4

2 に答える 2

2

使用している get および set は、実際にはget_Password()および と呼ばれるメソッドを作成しますset_Password(password)

実際のパスワードをプライベート変数に格納する必要があります。したがって、これらの「メソッド」によって返されて更新されるプライベート変数を持つだけが道です。

public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
[Required]
private string password;
public string Password
{
    get
    {
        return this.password;
    }

    set
    {
        this.password = Infrastructure.Encryption.SHA256(value);
    }
}
}
于 2012-10-20T14:10:36.160 に答える