- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在我的应用程序的服务器端使用 web api 2.0
和 c#
。
我想创建一个自定义过滤器(我猜是自动化过滤器)来仅授权来自允许的推荐人(我定义的)的发布/放置请求并阻止所有其他请求。
编辑:解释更多:我需要一个很好的方法来查看 Request.Header.Referrer
是否存在于我预定义为允许请求的引用列表中,否则我会阻止它并且不会授权方法执行
我是否使用 AuthorizationFilter
?为什么?如何?还是我需要其他类型的过滤器,如 OperationFilter
或其他?
如果你可以另外向我解释一下是什么让我选择使用这种类型的过滤器而不是其他过滤器的主要区别......
我在谷歌中搜索了它,但我发现的是详细的非常大的实现,但我仍然看不出最流行(使用)的过滤器类型与我们做出选择的原因之间的区别。
提前致谢
编辑:我尝试实现 CORS,但问题是 CORS 不会像此 post 中提到的那样合并请求... 给出的解决方案对于像我这样的简单需求来说太多了
最佳答案
您可以使用自定义 HttpHandlers
来处理识别传入请求的类型。您可以从 System.Net.Http.DelegatingHandler
派生并覆盖 SendAsync
方法,如下所示
public class RequestFilterHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
Task<HttpResponseMessage> responseTask;
if (IsAuthorizedPostOrPutCall(request))
{
responseTask = base.SendAsync(request, cancellationToken).ContinueWith(task => task.Result);
}
else
{
responseTask = new Task<HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.Unauthorized));
responseTask.Start()
}
return reponseTask;
}
private bool IsAuthorizedPostOrPutCall(HttpRequestMessage request)
{
var referrerList = //Assumption:Predefined list you get through a service
return referrerList.Contains(request.Headers.Referrer) && ( request.Method == HttpMethod.Post || request.Method == HttpMethod.Put);
}
}
在您的 Global.asax.cs 中:
GlobalConfiguration.Configuration.MessageHandlers.Add(new RequestFilterHandler());
关于c# - web api 2.0 过滤器实现 customFilter 的最佳选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44777162/
我正在使用 Angular CLI。我想制作一个自动完成表单,查看所有值(不像 angular.io 的例子那样做一个“开始于”)。 我设法让它与 [formControl] 一起工作,但我想将它插入
我正在开发 AngularJS 应用程序,我尝试添加 Angular Animate。 Angular Route 没有造成任何问题,但 Angular Animate 似乎与我的应用程序中的某些内容
我在我的应用程序的服务器端使用 web api 2.0 和 c#。 我想创建一个自定义过滤器(我猜是自动化过滤器)来仅授权来自允许的推荐人(我定义的)的发布/放置请求并阻止所有其他请求。 编辑:解释更
我是一名优秀的程序员,十分优秀!