我有一个ORM(NHibernate),将映射到POCO中,并在ApiController中返回。 我知道JSON.NET可以让我在我的模型上放置条件序列化方法(ShouldSerialize*); 但是,这些模型及其方法对它们的环境一无所知,也不应该知道。 我想根据用户登录网站时的角色,有条件地序列化一个模型或其中一个或多个属性。 我可以理解如何进行概念上的操作,但在某些方面感到困惑。 这是一个示例模型:
public class SomeModel
{
public string SomeProperty { get; set; }
[Sensitive]
public string SomeOtherProperty { get; set; }
}
我希望能够在属性上标记一个"敏感"属性。然后,在WebApi对其进行序列化输出时,我希望它检查该属性是否存在此属性,并检查用户的角色。如果用户在指定的角色中,则序列化程序应将该属性序列化,否则将屏蔽或简单地不序列化它。所以,我是否需要编写自己的自定义格式化程序来处理这个问题,还是有一种方法可以连接到内置的格式化程序来执行此检查?或者我的想法过于受限,有其他方法来解决这个问题吗?
我曾考虑过另一种处理方式是在ORM级别上进行,但在网上找不到好的示例。
非常感谢!
编辑:我在这里找到了另一个类似的问题:基于权限从WebApi端点进行上下文序列化,但没有解决方案。而且,我不喜欢通过属性在模型中设置基于角色的访问权限。我认为这应该在Web应用程序中处理。