即使没有 [Authorize] 属性也会调用 HandleAuthenticateAsync

HandleAuthenticateAsync called even without [Authorize] attribute

我使用的是自定义 AuthenticationHandler,只有我的一些控制器方法具有 [Authorize] 属性。我登录信息级别,它为 any 方法调用创建了一个日志条目。现在我无法区分是否有人真的尝试访问需要授权的方法但失败了,或者它是否调用了一个甚至不需要授权的方法并且失败了,因为它应该这样做。

有没有办法区分它们,或者最好让 MVC 在不需要时调用 HandleAuthenticateAsync

听起来您可能误用了 AuthenticationHandler。如果用户身份验证失败,您不应该立即拒绝访问。如果这样做,它甚至不会到达管道中的 MVC 上下文。

除非您有意拒绝对未经身份验证的用户的任何访问,否则您应该只进行身份验证或以匿名用户身份通过​​。在那之后的某个时候 AuthorizeAttribute 将启动并检查用户是否可以访问所请求的资源。如果他未通过身份验证,授权将拒绝该请求。