在 asp.net web api 中注入请求 header 的最佳方式

best way to inject request header in asp.net web api

我正在开发一个 api,post 一个简单的 class 数据库,我正在使用 asp.net web api 和 Ninject。此 api 的客户正在将此 api 请求 headers

username: xx and password: yy

所以在每一种方法中我都必须检查用户名和密码是否正确。我知道这不是真正的方法,我可以使用 BasicAuth。 OAuth 除外。但我必须那样做。

我的问题是,我可以将阅读请求的逻辑 header 注入到一个 gloabl 变量中,这样我就可以停止重复自己了。

我使用的简单逻辑:

   [HttpPost]
   public HttpResponseMessage Post(Sale saleRecord)
   {
   var request = HttpContext.Current.Request;
   var username = request.Headers["username"];
   var password = request.Headers["password"];
   if(username=="xx" && password=="yy")
   {//Logic here} 
   }

在 Mvc 中我们可以覆盖 OnActionExecuting() 方法并检查那些 header 但在网络中 api 我不能覆盖它。

最佳做法是什么?

您也可以像在 Web 中的 MVC 中那样执行操作过滤器 api 并解决读取请求中的常见信息和 header 信息。

https://damienbod.wordpress.com/2014/01/04/web-api-2-using-actionfilterattribute-overrideactionfiltersattribute-and-ioc-injection/

我不是很熟悉 Ninject 但在上面的文章中它确实展示了如何为 Action 过滤器做 IoC,我使用 Structuremaps 并且我通过 属性 注入来做 Action Filters/Attributes.