【发布时间】:2019-01-31 15:10:08
【问题描述】:
假设我有一个数据库,我在其中存储此结构的用户详细信息:
public class User
{
public string UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string PasswordHash { get; set; }
}
我有一个与之配合使用的数据访问层,它包含诸如 GetById() 之类的方法并返回给我一个用户对象。
然后说我有一个 API 需要返回用户详细信息,而不是像 PasswordHash 这样的敏感部分。我可以从数据库中获取用户,但我需要删除某些字段。这样做的“正确”方法是什么?
我已经想到了几种方法来处理这个问题,其中大部分涉及将 User 类拆分为具有非敏感数据的 BaseClass 和包含我希望保密的属性的派生类,然后转换或映射在返回 BaseClass 之前将其对象,但是这感觉笨重和肮脏。
感觉这应该是一个相对常见的情况,所以我错过了一种简单的方法来处理它吗?我正在专门使用 ASP.Net 核心和 MongoDB,但我想这是一个更普遍的问题。
【问题讨论】:
-
看看视图模型模式。
-
@DanielA.White 我不确定我是否理解;我不想返回视图模型,这是一个返回纯数据的 API
-
@DanielA.White 我明白什么是视图模型,我只是不认为这是我想要的。如果唯一需要的数据是我已经拥有的对象的 2 个字段,我不想创建 ViewModel 类并手动填充这些字段?
-
[JsonIgnore] public string PasswordHash { get;放; . 序列化模型时会忽略
标签: c# asp.net-core .net-core