如何在使用属性进入控制器之前检查 HTTP header 值?
How to check the HTTP header value before entering a controller using an attribute?
我正在尝试检查 http header 是否包含特定值,然后对其执行一些操作。我可以为此编写一个方法,但我想知道我是否可以使用属性来做到这一点。类似于:
[CheckHeader("SomeValue")]
public IHttpActionResult MyController()
{
//do stuff
}
此外,有什么方法可以根据 header 值阻止控制器 运行 吗?
您可以根据 header
中的值从 AuthorizeAttribute
和 return 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;
}
}
我正在尝试检查 http header 是否包含特定值,然后对其执行一些操作。我可以为此编写一个方法,但我想知道我是否可以使用属性来做到这一点。类似于:
[CheckHeader("SomeValue")]
public IHttpActionResult MyController()
{
//do stuff
}
此外,有什么方法可以根据 header 值阻止控制器 运行 吗?
您可以根据 header
中的值从AuthorizeAttribute
和 return 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;
}
}