ActionFilterAttribute执行了2次问题
问题描述:最近搭建了一个.NET Core WebApi,用ActionFilterAttribute来处理token和权限问题,结果每次调用接口都执行2次OnActionExecuting或者OnActionExecutionAsync。
问题分析:网络上有说是和浏览器有关系,说谷歌浏览器的jsonview的问题啥的,经过测试并没有关系。最后仔细分析了一下架构,发现是Controller的问题。
解决方法:通过下图代码,可以看到Controller本身已经过滤了,GetTest1List又要求过滤,所以ActionFilterAttribute执行了2次,根据权限设计,可以去掉其中之一AuthorizeFilter即可。
[Route("[controller]/[action]")]
[ApiController]
[AuthorizeFilter]
public class Test1Controller : ControllerBase
{
[HttpGet]
[AuthorizeFilter("test1")]
public async Task<TData<List<Test1Entity>>> GetTest1List()
{
return await new Test1BLL().GetList();
}
}