2

我正在尝试通过在客户端获取对象时使用 Json Ignore 属性来使 Json .NET Ignore 属性,但我希望能够在客户端发布时接收该属性

例如,我有:

当客户端 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. 登录类,包含登录信息(即Email、Password)
  2. UserInfo 类,其中包含有关用户的其余元数据(即 FirstName、LastName)

这样,我们就不用依赖序列化器来隐藏敏感数据了。

您可以使用 [IgnoreDataMember] 属性,并且开箱即用的 XML 和 JSON 格式化程序将支持它们,但不能保证任何其他注册的自定义格式化程序都会支持它。

请注意,[JsonIgnore] 仅在 JSON 格式化程序中受支持,而不在 XML 格式化程序中受支持。

于 2012-11-07T23:59:03.163 回答