是否可以Authorization在我的控制器构造函数中读取标头?如何?这是实现我的目标的最佳解决方案(在控制器构造函数中读取标头值)吗?
以下是我继承接口的类的代码:
public interface IProvider
{
string SendData(string data);
//other methods
}
public class FirstProvider : IProvider
{
private string _url;
public FirstProvider(string url)
{
_url = url;
}
public string SendData(string data)
{
//send data to First provider website (_url)
//return result
}
}
public class SecondProvider : IProvider
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
以及以下 API 控制器:
public class ProviderController : ApiController
{
private IProvider _provider;
public ProviderController()
{
//read authorization key from headers (How??)
string authToken;
//fetch from database/cache what provider to use based on the authorization key
var provider = Providers.GetProvider(authToken);
//Initialize _provider based on the database query result
if (provider.Name == "a")
{
_provider = new FirstProvider(provider.Data);
}
else if (provider.Name == "b")
{
_provider = new SecondProvider(provider.Data);
}
//Other providers will be added in future
}
public ProviderController(IProvider provider)
{
_provider = provider;
}
public IHttpActionResult SendData(string data)
{
_provider.SendData(data);
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud)
你可以用 System.Web.HttpContext.Current.Request.Headers
但是,您应该使用构造函数注入(您似乎已经在使用其他构造函数 public ProviderController(IProvider provider)
您可以使用 IOC 容器根据请求进行条件绑定。请参阅 基于路由数据值的 Ninject 注入
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |