我有当前的API(web api 2)项目,其中包含许多正在使用的消息处理程序,一些针对每个请求运行(检查以确保请求是https并且请求来自授权客户端)以及一些在特定路由上运行(检查是否存在安全令牌)。
现在我的问题是如何在MVC 6中复制此功能,我目前的理解是应该通过使用中间件来完成,但我还没有找到一个允许我检查标头的示例传入的请求,如果它们不应该是它们应该返回适当的http响应代码。
答案 0 :(得分:2)
中间件绝对是解决您想要解决的问题的正确选择。我在这里写了一篇关于使用/编写middlware的合理解释:ASP.NET MVC 6 handling errors based on HTTP status code
要具体回答如何检查标题,这是一个例子:
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();
}
});
}
}