我目前有一个API(web API 2)项目,该项目使用了许多消息处理程序,其中一些针对每个请求运行(检查以确保请求是https,并且请求来自授权客户端),还有一些在特定路由上运行(检查是否存在安全令牌)。
现在我的问题是如何在MVC 6中复制此功能,我目前的理解是应该通过使用中间件来完成,但我还没有找到一个允许我检查传入请求的标头的示例,如果它们不是应该的,则返回适当的http响应代码。
中间件绝对是解决您想要解决的问题的正确选择。我在这里写了一篇关于使用/编写中间件的不错的解释:ASP.NET MVC 6处理基于HTTP状态代码的错误
为了具体回答如何检查标题,这里有一个例子:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
if (!string.Equals(context.Request.Headers["myheader"], "somevalue", StringComparison.Ordinal))
{
context.Response.StatusCode = 400;
await context.Response.WriteAsync("Invalid headers");
}
else
{
await next();
}
});
}
}