【发布时间】:2022-01-11 12:49:41
【问题描述】:
如果请求在标头中没有特定值,我会尝试阻止控制器中的请求。所以我使用一些指导方针做了以下事情:
public class InvalidTokenAttribute : Attribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
var Authorization = context.HttpContext.Request.Headers["test"];
if (Authorization != "12345678910")
{
context.ModelState.AddModelError("Authorization", "Authorization failed!");
}
}
public void OnActionExecuted(ActionExecutedContext context)
{
}
}
当我在将 Console.WriteLine() 放在自定义属性类中的特定控制器中使用该属性时,它起作用并得到确认。但不幸的是,它不会在控制器级别引发任何异常。我做了如下操作:
请求:
GET http://localhost:PortNo/WeatherForecast/GetAllTeams
test: "12345678"
控制器:
[HttpGet]
[InvalidToken]
public async Task<ActionResult<IEnumerable<TeamDetails>>> GetAllTeams()
{
string Token = Request.Headers["test"];
return Ok(Token);
}
使用该属性,它不应进入控制器,因为标头值无效或不匹配。不幸的是,控制器中返回的值并显示输出。有什么我错过的吗?
【问题讨论】:
标签: c# .net-core asp.net-core-webapi .net-core-3.1