我有多个角色可以访问我的odata服务,根据角色,我需要隐藏几列。我怎样才能做到这一点?
答案 0 :(得分:0)
自定义DefaultODataSerializerProvider。
public override ODataSerializer GetODataPayloadSerializer(IEdmModel model, Type type, HttpRequestMessage request)
覆盖GetODataPayloadSerializer方法,通过请求获取角色,将其存储在客户序列化程序中,返回客户序列化程序。
如果您返回实体,请自定义ODataEntityTypeSerializer
public override ODataEntry CreateEntry(SelectExpandNode selectExpandNode, EntityInstanceContext entityInstanceContext)
覆盖CreateEntry方法,通过角色删除属性。像:
var idProp = selectExpandNode.SelectedStructuralProperties.FirstOrDefault(p => p.Name == "Id");
if (idProp != null)
{
selectExpandNode.SelectedStructuralProperties.Remove(idProp);
}
ODataEntry entry = base.CreateEntry(selectExpandNode, entityInstanceContext);
return entry;