首页 > 解决方案 > 即使没有 [Authorize] 属性也会调用 HandleAuthenticateAsync

问题描述

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

HandleAuthenticateAsync有没有办法将它们区分开来,或者最好在不需要时阻止 MVC 调用?

标签: c#asp.net-core-mvcauthorize-attribute

解决方案


听起来您可能在滥用AuthenticationHandler. 如果用户未能通过身份验证,您不应立即拒绝访问。如果这样做,它甚至不会到达管道中的 MVC 上下文。

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


推荐阅读