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-mvc – ASP.NET MVC API或WCF API
- asp.net-mvc – 如何根据用户过滤MVC 4中的结果
- asp.net-mvc – View()vs. PartialView()
- asp.net-mvc – 由于已知在Cross Site Scripting攻击中使用
- 在ASP.NET MVC网站中无法获取详细的错误信息
- asp.net – 使用回发解析.Net页面
- asp.net – 您没有使用批量加载语句的权限
- .net – 为什么我的剃刀视图抱怨“}预计”升级到剃刀2/mvc
- 构建ASP.NET应用程序 – 最佳实践
- LoginView中的ASP.NET LoginStatus不会触发LoggingOut事件
- 在ASP.NET中生成图像缩略图?
- ASP.NET Core 2.0和Angular 4.3文件上传进度
- asp.net-mvc – 带MVC结果的Response.Flush无效
- asp.net-mvc – Telerik mvc grid,columns.bound
- views – 我应该在asp.net MVC6中为我的所有图像
- .net – 应用程序池限制
- asp.net-mvc – 在ASP.NET Identity中手动验证密
- asp.net – 单元测试操作过滤器 – 如何模拟View
- 在ASP.NET MVC Core项目中使用View内部的C#7功能
- asp.net – HttpContext的Cache和Items Properti
