我试图在客户端获取对象时使用 Json Ignore 属性来使 Json .NET 忽略属性,但我希望能够在客户端 POST 时接收该属性
在示例中我有:
当客户端POST数据时,应发送密码:
{"email":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c0a5ada1a9ac80a4afada1a9aeeea3afad" rel="noreferrer noopener nofollow">[email protected]</a>","password":"P@ssW0rd1!","firstname":"Joe","lastname":"Doe"}
但是,当客户端获取相同的对象时,我应该忽略密码:
{"email":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b8ddd5d9d1d4f8dcd7d5d9d1d696dbd7d5" rel="noreferrer noopener nofollow">[email protected]</a>","firstname":"Joe","lastname":"Doe"}
类(class):
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; }
}
有什么想法、建议、评论吗???
最佳答案
在您的场景中,我建议您将 User 类拆分为 2 个单独的模型类:
- 登录类,包含登录信息(即电子邮件、密码)
- UserInfo 类,其中包含有关用户的其余元数据(即名字、姓氏)
这样,我们就不会依赖序列化器来隐藏敏感数据。
您可以使用 [IgnoreDataMember] 属性,开箱即用的 XML 和 JSON 格式化程序将支持它们,但不能保证注册的任何其他自定义格式化程序都将支持它们。
请注意,[JsonIgnore] 仅在 JSON 格式化程序中受支持,但在 XML 格式化程序中不受支持。
关于asp.net-mvc - 如何在 Json .NET Web API 中 POST 但 JsonIgnore GET 时读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261760/