asp.net-mvc - 如何在 Json .NET Web API 中 POST 但 JsonIgnore GET 时读取属性

标签 asp.net-mvc json asp.net-web-api json.net

我试图在客户端获取对象时使用 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 个单独的模型类:

  1. 登录类,包含登录信息(即电子邮件、密码)
  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/

相关文章:

c# - 处理您的请求时发生错误。请求 ID : 0HLEALBF2I2PS:00000007

asp.net-mvc - 将 updatemodel 与 EF4.3.1 一起使用时出现 InvalidOperationException

javascript - 我如何从 React 中的 json 数据中获取特定值

java - 在 Activity 之间传递对象和/或对象列表的有效方法是什么?

sql - postgresql json聚合

c# - 传递嵌套复杂类型的 REST URL 语法是什么?

c# - 这是使用基于约定的方法在 Unity 中注册类型的正确方法吗?

c# - 从 mvc Controller 使用 Web api Controller 操作

c# - 如何在@Html.BeginForm中添加没有值的html属性

c# - 从 TimeSpan EditorFor 中删除秒数