我正在使用ASP.NET Core 2.0并进入Startup.cs
文件的设置。我知道从阅读中看,中间件的顺序很重要。
从此链接:https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules?view=aspnetcore-2.0
它表示如果提供的身份验证中间件设置正确,然后验证失败,则无论路由是否存在,都会发送未经授权的响应(HTTP 401 - 未授权)。
在我的场景中,我收到了HTTP 404(Not Found)对不存在的路由的响应。在我发布一些代码之前,我的理解是正确的中间件应该如何表现吗?
感谢。
答案 0 :(得分:0)
除了强调身份验证和授权之间区别的注释外,该引号还非常有用(摘自https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware):
身份验证不会短路未经身份验证的请求。 尽管身份验证中间件对请求进行身份验证, 授权(和拒绝)仅在MVC选择之后 Razor Page或MVC控制器和操作。
如果没有Razor Page或MVC控制器可供选择,这将导致HTTP 404(未找到),然后授权检查将产生HTTP 401(未授权)。
请记住,可以在操作级别指定授权属性,这意味着在选择页面或控制器/操作之前,授权检查将没有足够的信息来接受或拒绝请求(例如,可以修饰控制器)具有[Authorize]属性,而其中的特定动作则由[AllowAnonymous]属性修饰。