rest – 基于权限从WebApi端点进行上下文序列化
我正在使用Asp.Net Web Api.我希望能够根据连接的客户端访问权限过滤掉响应对象上的某些字段.
例: class Foo { [AccessFilter("Uberlord")] string Wibble { get; set; } string Wobble { get; set; } } 返回数据时,只有当前用户上下文可以满足“Uberlord”的值时才应返回提交的Wibble. 我正在探索三种途径,但我没有一个有效的解决方案: >自定义WebApi MediaTypeFormatter. 我的问题是: >自定义格式化程序感觉不是正确的位置,但可能是唯一的选择. 另一个好处是使用相同的机制从入站请求对象的字段中去除值. 我错过了一个明显的钩子吗?这是通过另一种方式解决的吗? 解决方法
它实际上比我想象的要简单得多.我没有意识到的是,
DelegatingHandler 可用于操纵响应以及
Web Api Pipeline中的请求.
Lifecycle of an ASP.NET Web API Message
例 以下是DelegatingHandler的示例实现,它可以操作响应对象或完全替换它. public class ResponseDataFilterHandler : DelegatingHandler { protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) { return base.SendAsync(request,cancellationToken) .ContinueWith(task => { var response = task.Result; //Manipulate content here var content = response.Content as ObjectContent; if (content != null && content.Value != null) { ((SomeObject)content.Value).SomeProperty = null; } //Or replace the content response.Content = new ObjectContent(typeof(object),new object(),new JsonMediaTypeFormatter()); return response; }); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Web窗体是否阻止双击提交?
- asp.net – 使用Elmah捕获背景线程中的异常
- asp.net – 访问listview的edititemtemplate中的控件
- asp.net – 如何使RequiredFieldValidator更改父div的css类
- asp.net – Razor视图无法识别@model或Lambda @Html方法
- iis-6 – IIS 6上的ASP.NET路由
- ASP.Net Session_Start事件未触发
- asp.net-mvc-3 – 通过URL导致控制器的DateTime导致ASP .NE
- asp.net-mvc – IIS8中最佳的“动态IP限制设置”是什么
- 字符串拆分ASP.NET / C#
- asp.net – 当DataSource中没有数据时,DetailsVi
- asp.net-mvc-3 – ASP.NET MVC 3 MSChart错误:此
- ASP.NET MVC =具有.NET类库的经典ASP.真?
- 利用EntLib授权机制实现对ASP.NET页面的自动授权
- asp.net-mvc – 我在MVC 5 Visual Studio 2013中
- asp.net-mvc – ServiceStack新服务并发ASP.NET
- asp.net-mvc – 如何在asp.net mvc视图中验证日期
- asp.net-core – 在Visual Studio 2015 for ASP.
- asp.net – 您在实施/使用WebDAV方面有哪些经验?
- ASP.NET MVC项目中的Web表单?