2

クライアントがオブジェクトを取得するときに Json Ignore Attribute を使用して Json .NET がプロパティを無視するようにしようとしていますが、クライアントが POST しているときにそのプロパティを受け取ることができるようにしたいと考えています。

例では:

クライアントがデータを POST すると、パスワードが送信されます。

{"email":"email@domain.com","password":"P@ssW0rd1!","firstname":"Joe","lastname":"Doe"}

ただし、クライアントが同じオブジェクトを取得する場合は、パスワードを無視する必要があります。

{"email":"email@domain.com","firstname":"Joe","lastname":"Doe"}

クラス:

    public class User
    {
        public User()
        {
            this.JoinDate = DateTime.UtcNow;
            this.IsActive = false;
        }
        public int Id { get; set; }

        [Required(ErrorMessage = "Email is required!")]
        public string Email { get; set; }

        [JsonIgnore]
        public string HashedPassword { get; set; }

        [Required(ErrorMessage = "Password is required!")]
        public string Password { get; set; }

        public DateTime JoinDate { get; set; }

        [Required(ErrorMessage = "First Name is required!")]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "Last Name is required!")]
        public string LastName { get; set; }

   }

アイデア、提案、コメント???

4

1 に答える 1

3

ここでのシナリオでは、 User クラスを 2 つの別々のモデル クラスに分割することをお勧めします。

  1. ログイン情報 (電子メール、パスワードなど) を持つログイン クラス
  2. UserInfo クラスには、ユーザーに関する残りのメタデータ (つまり、FirstName、LastName) があります。

このようにして、機密データを隠すためにシリアライザーに依存しません。

[IgnoreDataMember] 属性を使用できます。すぐに使用できる XML および JSON フォーマッターはそれらをサポートしますが、登録されている他のカスタム フォーマッターがそれをサポートするという保証はありません。

[JsonIgnore] は JSON フォーマッタでのみサポートされ、XML フォーマッタではサポートされないことに注意してください。

于 2012-11-07T23:59:03.163 に答える