我想实现一些自定义身份验证逻辑,所以我写了一个身份验证过滤器。但由于某种原因,AuthenticateAsync从未被调用,这使得该属性根本没用。
我在普通的web api项目中测试了相同的代码,该项目运行正常。任何想法为什么会这样?我如何调试以找到此方案的根本原因?我也没有在CallStack中得到任何东西。
这是控制器功能:
[HttpPost]
[CustomAuthentication]
public async Task<JsonResult> TestFunc(UserAccount user)
{
//controller logic
return Json("blah");
}
以下是身份验证过滤器:
public class CustomAuthenticationAttribute : Attribute, IAuthenticationFilter
{
public CustomAuthenticationAttribute()
{
var tt = "does it get in?";
}
public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
{
var req = context.Request; // never being called
//xxx authentication logic
return Task.FromResult(0);
}
}