我的Web API控制器应该根据用户试图获得的模型是否属于他而返回不同的模型。
例如:
class Customer {
public string Id { get; set; }
public int UserId { get; set; }
public string Name { get; set; }
public decimal Revenue { get; set; }
}
相应的操作是Api/Customers/1
。
现在,如果该模型属于当前正在调用该操作的用户,我想返回所有字段。但是,如果其他人调用相同的操作,他应该只看到Id
和Name
字段。
我知道您可以返回一个界面并根据身份验证级别选择实现,但我想知道是否有更简单的[JsonIgnore]
,但基于访问级别来实现相同的目标?它还可以帮助我减少代码重复。
实现我想要做的最优雅的方式是什么?
答案 0 :(得分:1)
我认为您可以使用JSON.NET的条件序列化(如果您使用的是JSON.NET)。这个link可以为您提供更多帮助
To conditionally serialize a property add a boolean method with the same name as
the property and then prefixed the method name with ShouldSerialize.
The result of the method determines whether the property is serialized.
If the method returns true then the property will be serialized, if it returns false
and the property will be skipped.
我能想到的其他事情是覆盖你的类中的Object.ToString()方法,它将根据你的需要返回JSON。您仍然需要指定条件,并在条件下返回您选择的JSON字符串。