在asp.net web api中注入请求头的最佳方法

时间:2015-04-02 12:44:08

标签: asp.net-mvc asp.net-web-api ninject

我正在开发一个api,它将一个简单的类发布到数据库,我正在使用asp.net web api和Ninject。这个api的客户端正在使这个api成为带头文件的请求

username: xx and password: yy

因此,我必须检查用户名和密码是否正确。我知道这不是真正的方法,我可以使用BasicAuth。 OAuth exc。但我必须这样做。

我的问题是,我可以将读取请求标头的逻辑注入一个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()方法并检查这些标题,但在web api中我无法覆盖它。

最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

您也可以在web api中执行类似MVC的动作过滤器,并解决从请求中读取常用信息和标题信息。

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

我对Ninject不是很熟悉,但在上面的文章中,它确实展示了如何使用IoC for Action过滤器,我使用了结构图,并且在动作过滤器/属性的情况下通过属性注入。