1
限制网络服务的数据契约属性我有以下的Web服务:如何基于用户角色
[DataContract]
public class Project
{
public long Id { get; set; }
public string Name { get; set; }
}
[OperationContract]
public Project GetProject(long Id);
现在我想添加一个SecretData
属性,只能暴露于特定的用户。我想出了一些想法,但他们没有坐很好与我:
- 可为空
SecretData
属性添加到Project
。如果用户无权查看,请将其设置为null
。这似乎是最简单的方法,但消费者将如何分辨“不许可”值和合法值null
之间的差异? - 解决方案1,但也添加布尔值
CanViewSecretData
属性。这解决了合法的null
问题,但似乎很麻烦。 - 提供单独的操作
SecretDataType GetSecretData(long projectId)
以检索秘密数据,并在用户无权调用时返回错误。这样可以保持数据契约的清洁,但是我看到我们结束了大量的单独操作,需要调用它们才能构建完整的对象。
那里有更好的方法吗?