我正在尝试通过使用json .net忽略属性,而当客户端获得对象时使用JSON忽略属性,但我希望在客户端处于帖子中时能够接收该属性'
例如,我有:
当客户端发布数据时,应发送密码:
{"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; }
}
任何想法,建议,评论???
在您的情况下,我建议您将用户类分为2个单独的模型类:
- 登录类,其中包含登录信息(即电子邮件,密码)
- UserInfo类,其余的元数据有关用户(即firstName,lastName)
以这种方式,我们不依赖于隐藏敏感数据的序列化器。
您可以使用[忽略的AtaMember]属性,并且盒外XML和JSON Formatters将支持它们,但不能保证任何其他自定义格式化器注册会支持它。
请注意,[jsonignore]仅在JSON格式中支持,而不是XML格式化。