保护敏感实体数据
我正在寻找一些关于具有一些特性的客户端/服务器解决方案的架构建议。
客户端相当厚,使服务器主要关注持久性,并发性和基础架构问题。
服务器包含许多包含敏感信息和公共信息的实体。例如,假设实体是人,假设社会安全号码和名称是敏感的,并且年龄是公众可见的。
启动客户端时,会向用户显示许多实体,而不会泄露任何敏感信息。用户可以随时选择登录并对服务器进行身份验证,如果身份验证成功,则授予用户访问敏感信息的权限。
客户端正在托管域模型,我正在考虑将其实现为某种“延迟加载”,使第一个请求实例化实体,然后使用敏感数据刷新它们。实体获取者在未被披露时会对敏感信息抛出异常,例如:
class PersonImpl : PersonEntity
{
private bool undisclosed;
public override string SocialSecurityNumber {
get {
if (undisclosed)
throw new UndisclosedDataException();
return base.SocialSecurityNumber;
}
}
}
另一种更友好的方法可能是使用一个值对象来指示该值未公开。
get {
if (undisclosed)
return undisclosedValue;
return base.SocialSecurityNumber;
}
一些问题:
如果用户登录然后退出,敏感数据已加载但必须再次公开。
有人可能会争辩说,这种类型的功能属于域而不是某些基础结构实现(即存储库实现)。
与处理大量属性一样,这种类型的功能可能会使代码混乱
任何见解或讨论表示赞赏!
没有找到相关结果
已邀请:
2 个回复
悍蕾驮苇袜
桔适丛
基础架构层添加了一些其他功能,以便能够从服务器更新和恢复entites:
因此,延迟加载行为将在基础结构层中实现,并且从未被域层看到。 我同意抛弃getter并不好,但我关注的是匿名视图模型将如何检索数据。截至目前,要检索视图模型将保存对域存储库的引用的实体列表,我应该有两个存储库,一个用于经过身份验证(因此已公开)的实体,另一个用于未经身份验证的用户 - 甚至可能是两个不同的实体?