我正在尝试检查http标头是否包含特定值,然后对其执行某些操作。我可以为此编写一个方法,但我想知道我是否可以使用属性来做到这一点。类似的东西:
[CheckHeader("SomeValue")]
public IHttpActionResult MyController()
{
//do stuff
}
另外,有没有办法可以阻止控制器运行,具体取决于标头值?
答案 0 :(得分:3)
您可以从AuthorizeAttribute
派生,并根据标题中的值返回true
或false
public class CheckHeader: AuthorizeAttribute
{
private readonly string _Value;
public CheckHeader(string value)
{
_Value = value;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// Get the headers
var headers = httpContext.Request.Headers;
// Do some checks (not sure what your wanting to do)
if (headers["SomeHeader"] == _Value)
{
return true;
}
return false;
}
}