我有一个映射到将在 ApiControllers 中返回的 POCO 的 ORM(NHibernate)。我意识到 JSON.NET 允许我将条件序列化方法 (ShouldSerialize*) 放在我的模型上;然而,这些模型和他们的方法对他们的环境一无所知,也不应该。我想做的是根据用户登录我的网站时的角色有条件地序列化模型或其一个或多个属性。我可以从概念上理解如何做到这一点,但我迷失了一部分。这是一个示例模型:
public class SomeModel
{
public string SomeProperty { get; set; }
[Sensitive]
public string SomeOtherProperty { get; set; }
}
我希望能够在属性上放置一个属性以将其标记为“敏感”。然后在我的 WebApi 中,当它序列化它以进行输出时,我希望它检查这个属性的模型,如果它存在,它应该检查用户的角色。如果用户处于指定角色,则序列化程序应序列化该属性,否则它将屏蔽它或根本不序列化它。那么我是否必须编写自己的自定义格式化程序来处理这个问题,或者有没有办法连接到内置的格式化程序来执行这个检查?还是我的思维太局限了,还有另一种处理方式?
我确实认为可以处理的另一种方法是在 ORM 级别,但在网上找不到好的例子。
非常感激!
编辑:我确实在这里找到了另一个类似的问题: 基于权限的 WebApi 端点的上下文序列化, 但没有解决方案。另外,我不喜欢通过属性在模型中设置基于角色的访问的想法。我认为应该在 Web 应用程序中处理。