我想实现一些自定义的身份验证逻辑,所以我写了一个身份验证过滤器。但是由于某种原因, 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);
}
}