首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

即使使用AuthorizeFilter,Asp.Net核心MVC中间件也会返回404而不是401

在Asp.Net核心MVC中间件中,即使使用AuthorizeFilter,有时候会返回404而不是401的原因可能是由于路由配置或者中间件顺序的问题。

  1. 路由配置问题:请确保路由配置正确,包括控制器和动作方法的命名、路由模板的定义等。如果路由配置不正确,请求可能无法正确匹配到相应的控制器和动作方法,导致返回404错误。
  2. 中间件顺序问题:在Asp.Net核心MVC中,中间件的顺序非常重要。如果在AuthorizeFilter之前有其他中间件处理了请求,可能会导致授权过滤器无法正确执行。请确保AuthorizeFilter在中间件管道中的位置正确,应该放在其他中间件之前。

另外,如果您遇到了这个问题,可以尝试以下解决方法:

  1. 检查路由配置:确保路由配置正确,包括控制器和动作方法的命名、路由模板的定义等。
  2. 检查中间件顺序:确保AuthorizeFilter在中间件管道中的位置正确,应该放在其他中间件之前。
  3. 检查授权策略:确保授权策略正确配置,并且用户具有足够的权限来访问受保护的资源。
  4. 检查身份验证配置:确保身份验证配置正确,并且用户已经通过身份验证。

如果以上方法都没有解决问题,可以尝试查看日志文件或者调试代码,以进一步定位问题所在。如果问题仍然存在,建议向Asp.Net核心MVC社区或者相关论坛寻求帮助,以获取更详细的解决方案。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):提供弹性计算能力,满足各种业务需求。产品介绍链接
  • 腾讯云数据库(TencentDB):提供多种数据库解决方案,包括关系型数据库和NoSQL数据库。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等。产品介绍链接
  • 腾讯云移动开发(Mobile):提供移动应用开发和运营解决方案,包括移动后端云服务、移动推送等。产品介绍链接
  • 腾讯云存储(COS):提供高可靠、低成本的云存储服务,适用于各种数据存储需求。产品介绍链接
  • 腾讯云区块链(BCS):提供安全、高效的区块链服务,支持企业级应用场景。产品介绍链接
  • 腾讯云元宇宙(Metaverse):提供虚拟现实(VR)和增强现实(AR)技术支持,构建沉浸式体验。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

asp.net core 认证及简单集群

觉得没关系啊,这是net core认证的第二个坑,那就是,在.net core或者微软看来,认证仅仅提供Principal的生成、序列化、反序列化及重新生成Principal,它的职责确实包括了返回...我仔细阅读了官网文档,得出的大致结论是,.net core大概认为,认证是个多样化的过程,不光有我们目前看到的或需要的某一种认证,实际需求中很可能多种认证并存,我们的API可能会同时允许多种认证方式通过...,所以某一种认证失败就直接返回401或403是错误的。...那话说回来,添加了授权,就可以触发这个过程,这个是看源码发现的,具体流程就是,如果授权失败,过滤器返回一个challengeResult,这个Result最终会跑到认证中间件中的对应Challenge...可以看到,直接401了,而且,响应标头中,有个Location,这个是challenge中默认实现的,告诉我们需要去登录认证,认证完了跳转到当前请求资源url(在MVC中尤其有用)。

1.2K10

Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读

一、前言 IdentityServer4已经分享了一些应用实战的文章,从架构到授权中心的落地应用,伴随着对IdentityServer4掌握了一些使用规则,但是很多原理性东西还是一知半解,故我这里持续性来带大家一起来解读它的相关源代码...Core 中的http中间件根据IAuthorizeData这个来获取有哪些授权过滤器,来实现过滤器的拦截并执行相关代码。...获取到相关authorizeData授权数据后,下面的一系列代码都是通过判断来进行AuthorizeAsync授权执行的方法,这里就不详细分享它的授权认证的过程了。...AuthorizeFilter 源码 有的人问AuthorizeAttirbute和AuthorizeFilter有什么关系呢?它们是一个东西吗?...结论:授权中间件通过获取IAuthorizeData来获取AuthorizeAttribute对象相关的授权信息,并构造授权策略对象进行授权认证的,AuthorizeFilter过滤器默认添加AuthorizeAttribute

3.6K20
  • ASP.NET Core使用Middleware模拟Custom Error Page功能

    一、使用场景 在传统的ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute...有时候在Error视图中会发生错误,这时ASP.NET/MVC将会显示其默认的错误页面(黄底红字),为了避免这种情况的出现,我们都是在Web.config文件的customErrors节中来自定义错误页面...> 二、.NET Core实现   既然想用ASP.NET Core中的中间件模拟Custom Error Page功能,那首先我从配置下手...": { "401": "/Error/Http401Page", "403": "/Error/Http403Page", "404": "/Error/Http404Page", "...当然我们最后,还要为这个中间件添加一个扩展方法,ASP.NET Core中为 IApplictionBuilder创建了好多的扩展方法,其实也好比它的名子一样,它就应该是一个建造者模式。

    1.3K30

    从头编写 asp.net core 2.0 web api 基础框架 (1)

    比如处理验证(authentication)的程序, 连MVC本身就是个中间件(middleware). ? 每层中间件接到请求后都可以直接返回或者调用下一个中间件....用来创建 Web Api的middleware:  原来的.net使用asp.net web api 和 asp.net mvc 分别来创建 web api和mvc项目....这是因为我只添加了MVC middleware, 但是它啥没做, 也没有找到任何可用于处理请求的代码, 所以我们要添加Controller来返回数据/资源等等....请求的网址返回404 Not Found, 因为还没有配置路由 Routing, 所以MVC不知道如何处理/映射这些URI....因为框架找到了匹配uri的action, 所以不会返回404, 但是我们如果找不到数据的话, 应该返回404错误才比较好.

    2.1K70

    ASP.NET Core 6框架揭秘实例演示:异常处理高阶用法

    这是因为处理这种“预编译”模式,ASP.NET还支持运行时动态编译。以MVC应用为例,我们可以在运行时修改它的视图文件,这样的修改就会触发动态编译。如果修改的内容没法通过编译,就会抛出编译异常。...我们接下来利用一个MVC应用来演示DeveloperExceptionPageMiddleware中间件针对编译异常的处理。...[2113]针对404响应的处理 ExceptionHandlerOptions 配置选项的AllowStatusCode404Response属性则表示该中间件是否允许最终返回状态码为404的响应。...该属性默认值为false,这意味着在默认情况下,为该中间件指定的异常处理器不能返回404响应,此时该中间件会将原始的异常抛出来。...如图5所示,针对路径“/foo”的请求返回依然是状态码为500的响应,异常处理器返回404响应在针对路径“/bar”的请求中被正常返回了。

    1.2K20

    ASP.NET Core 2.1 : 十四.静态文件与访问授权、防盗链

    本文主要通过解读一下ASP.NET Core对于静态文件的处理方式的相关源码,来看一下为什么是wwwroot文件夹,如何修改或新增一个静态文件夹,为什么新增的文件夹名字不会被当做controller处理..., 先判断是否为静态文件的请求,如果是,则在此做了请求处理,这时候请求会发生短路,不会进入后面的mvc中间件处理步骤。...StaticFileContext, 然后对其逐步判断,例如请求的URL是否与设置的静态目录一致, 判断文件是否存在,判断文件类型等, 若符合要求 ,进一步判断文件是否有修改等。...因为即使采用了授权, app.UseAuthentication(); 一般也是写在 app.UseStaticFiles() 后面的,那么如果我们想对其进行授权管理,首先想到可以改写 StaticFileMiddleware...).ToLower().Equals("file")) { bool isAllow = false;//在此进行一系列访问权限验证,如果失败,返回一个默认图片

    1.3K20

    详解ASP.NET Core 处理 404 Not Found

    解决方案 在以前的ASP.NET MVC版本中,主要在 web.config 中处理404错误的。...在这里,我们知道用户正在查看产品,不是返回通用错误,我们可以更友好的页面,返回自定义未找到产品的的页面。这仍然需要返回404状态代码,但是使用不通用的页面,同时可以向用户显示类似或受欢迎的产品。...通配路由 在先前版本的MVC,创建一个通配符路由来处理,在.NET Core中,可以使用相同的方式。这个方式是,您有一个通配符路由,它会接收任何其它路由尚未处理的URL。...这意味着如果您使用上面详细描述的自定义视图技术,则404状态代码将不会被中间件处理(这正是我们想要的)。...app.UseMvc(); 中间件定义的顺序很重要,您需要确保在可能返回错误代码的任何中间件(如MVC中间件)之前注册StatusCodeWithReExecute。

    2K20

    ASP.NET Core集成现有系统认证

    我们现在大多数转向ASP.NET Core来使用开发的团队,应该都不是从0开始搭建系统,而是老的业务系统已经在运行,ASP.NET Core用来开发新模块。...本文将给大家简单阐述一下认证与授权的基本概念,以及基于ASP.NET Core 中间件实现的认证和改造JwtBearer 认证中间件来实现的认证达到与老系统(主要是token-based认证)的集成。...当Request的Headers中没有一个值为“jessetalk.cn” 以及 name为” token”的项的时候,我们就返回401状态,并且不执行后面的处理。...《在ASP.NET Core中使用JWTBearer Authentication》。...更多精彩文章: ASP.NET Core依赖注入全知道: https://mp.weixin.qq.com/s/lR9O7bXiI704kSu7bKdLGg 我心中的ASP.NET Core新核心对象之

    2.7K90

    ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. ...集成测试中使用Bearer Token 我这个项目里生产时使用的是Identity Server 4, 进行集成测试时使用Identity Server 4可能不太方便, 所以我决定简化一下, 把这项工作就仅限制在...在ConfigureServices()方法里, 首先添加一个权限策略, 要求所有的MVC Controller只有授权的用户才能访问....测试身份验证中间件 被测试系统使用了身份中间件: app.UserAnthentication(), 我们可以测试一下这个中间件的功能, 如果Token不正确的话, 就应该返回401 UnAuthorized...这个测试代码很简单, 就是设置了一个不正确的token, 并Assert返回状态码是401. 该测试会通过: ? 文章略短, 就介绍到这.

    93930

    ASP.NET Core 2.0 : 八.图说管道,唐僧扫塔的故事

    Configure方法默认情况下已经依次进行了UseBrowserLink、UseDeveloperExceptionPage、UseStaticFiles、UseMvc了等方法,请求进入管道后,请求按照这个顺序来经过各个中间件处理...,正常情况下,请求到达MVC中间件后被处理生成Response开始逆向返回不会到达最终的404,这个404是为了防止其他层未配置或未能处理的时候的一个保险操作。     ..._components,中间件本身并未执行,然后10至12行是依次经过我们自定义的例子的处理,第13-18就是在中间件MVC中的处理了,找到并调用对应的Controller和View,然后才是19-22...可以看到,MVC处理的部分没有了,因为该中间件已被注释,最后一条可以看到系统返回了状态404。  ...那么既然MVC可以正常处理请求没有进入404, 我们怎么做可以这样呢?是不是不调用下一个中间件就可以了?

    58340

    一个Mini的ASP.NET Core框架的实现

    ,重点讲解了7个核心对象,围绕ASP.NET Core最核心的本质—由服务器和若干中间件构成的管道来介绍。...Configure方法则主要用来注册中间件,其中IApplicationBuilder是一个请求处理的核心构造器接口,它是注册和使用中间件的入口。   ...在ASP.NET Core Mini中,不例外,我们创建一个HttpContext,然后将这个HttpContext传递给注册的中间件,各个中间件可以拿到这个HttpContext去做具体的处理了...,Build方法的作用就是构建由注册中间件组成的请求处理管道,Server加上这个由中间件组成的请求处理管道便是ASP.NET Core的核心内容。...}; ...... }   这里默认中间件返回404,在如果没有手动注册任何中间件的情况下生效。

    1.1K20

    ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 + 项目准备

    还有其它的方式创建Controller,按约定类名以Controller结尾的POCO类会被认为是Controller,例如: 针对POCO类, 即使名称不是以Controller结尾,仍然可以把它作为...过滤器 和中间件一样,ASP.NET Core MVC的过滤器可以在请求管道的特定阶段的之前或之后执行某些代码。过滤器还可以有子管道,子管道里面包含着其它过滤器。...过滤器和中间件的区别:中间件是应用程序级别的,它可以处理每个发送过来的请求;而过滤器是针对MVC的,它只会处理发往MVC的请求。...ASP.NET Core MVC 默认实现并使用JSON格式化,但也支持其它格式,这需要在startup里面注册。...即使文件变化了并且配置模型通过文件提供商进行了更新, IOptions的实例仍然包含的是原始值.

    2.7K72

    ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

    在构建API或微服务时, 这些服务器可以作为网关使用, 因为它们限制对外暴露的东西可以更好的与现有系统集成, 所以它们提供额外的防御层,  使用反向代理服务器(IIS)之后的流图如下: ?...针对POCO类, 即使名称不是以Controller结尾,仍然可以把它作为Controller,这就需要在类上面添加 [Controller] 这个属性: ?...但是我使用这种方法并不好用,不知道我哪里用错了! 过滤器 ? 和中间件一样,ASP.NET Core MVC的过滤器可以在请求管道的特定阶段的之前或之后执行某些代码。...过滤器和中间件的区别:中间件是应用程序级别的,它可以处理每个发送过来的请求;而过滤器是针对MVC的,它只会处理发往MVC的请求。...ASP.NET Core MVC 默认实现并使用JSON格式化,但也支持其它格式,这需要在startup里面注册。

    1.7K00

    ASP.NET Core 应用中使用 Cookie 进行身份认证

    Core MVC 应用,这里以 VS 创建的默认项目为例,对于一个 MVC or Web API 应用,要求用户必须登录之后才能进行访问,最简单的方式,在需要认证的 Controller 或 Action...Startup.Configure 方法中添加 UseAuthentication 中间件到 HTTP 管道中,实现对于网站认证的启用,这里需要注意,因为是先认证再授权,所以中间件的添加顺序不可以颠倒...当我们需要在一个独立的类库中获取存储的用户信息时,我们需要进行如下的操作 第一步,在 Startup.ConfigureServices 方法中注入 HttpContextAccessor 服务 public...Nuget 引用 Microsoft.AspNetCore.Http,之后就可以在具体的类中通过注入 IHttpContextAccessor 来获取到用户信息,当然,可以在此处实现登录、登出的方法...ASP.NET Core

    1.3K40

    ASP.NET Core 2.0 : 八.图说管道,唐僧扫塔的故事

    Configure方法默认情况下已经依次进行了UseBrowserLink、UseDeveloperExceptionPage、UseStaticFiles、UseMvc了等方法,请求进入管道后,请求按照这个顺序来经过各个中间件处理...,正常情况下,请求到达MVC中间件后被处理生成Response开始逆向返回不会到达最终的404,这个404是为了防止其他层未配置或未能处理的时候的一个保险操作。     ..._components,中间件本身并未执行,然后10至12行是依次经过我们自定义的例子的处理,第13-18就是在中间件MVC中的处理了,找到并调用对应的Controller和View,然后才是19-22...可以看到,MVC处理的部分没有了,因为该中间件已被注释,最后一条可以看到系统返回了状态404。  ...那么既然MVC可以正常处理请求没有进入404, 我们怎么做可以这样呢?是不是不调用下一个中间件就可以了?

    59150

    《从零开始学ASP.NET CORE MVC》课程介绍(一)

    MVC和Web API的统一编程模型: 使用ASP.NET Core ,我们使用相同的编程模型来创建MVC风格的Web程序和ASP.NET Web API。...因此,对于Web API,控制器返回JsonResult,对于MVC风格的Web程序,它返回ViewResult。...模块化HTTP请求管道 ASP.NET Core 提供了模块化的中间件组件。 在ASP.NET Core中,请求(Request)和响应(Response)的管道都使用中间件组件。...它包含一组丰富的内置中间件组件。我们还可以编写自己的自定义中间件组件。随着课程的进行,我们将讨论中间件组件是什么,并使用它们来组成请求和响应管道。...开始课程前得会点啥: 一些基本的HTML,CSS和C#,无须是这方面的熟练者。您只需要掌握他们的基础知识就可以了。 之前的MVC知识很有帮助但不是必需的。即使你没有任何MVC经验,没关系。

    1.6K30

    ASP.NET Core 中的那些认证中间件及一些重要知识点

    有关于 Authentication 的知识太广,所以本篇介绍几个在 ASP.NET Core 认证中会使用到的中间件,还有Authentication的一些零碎知识点,这些知识点对于 ASP.NET...在 AuthenticationHandler 中, 有几个比较重要的方法: HandleAuthenticateAsync :处理认证流程中的一个核心方法,这个方法返回 AuthenticateResult...,下面一个人回答使用JWT。 其实JWT 它不是一种认证方式,不是一种认证的技术,它是一个规范,一个标准。...默认情况下MVC的Filter自动的触发[Authorize],当然也有一种手动触发Authorize的办法就是使用HttpContext.Authentication.ChallengeAsync(...不幸的是,目前框架对于这种情况并没有一个健壮的机制,如果开发人员对于这种机制不是很清楚的话,可能造成很大的困扰。

    1.8K20

    ASP.NET Core 错误处理(Handle Errors)

    - 依赖注入》 《理解 ASP.NET Core - 文件服务器(File Server)》 使用中间件进行错误处理 开发人员异常页 开发人员异常页用于显示未处理的请求异常的详细信息。...里面报错,此时ExceptionHandlerMiddleware均会重新引发原始异常,不是向外抛出备用管道的异常。...可是,为了良好的用户体验,一般我们会对常见的错误状态码(404)提供友好的页面,如gitee404 请注意,本节所涉及到的中间件与上两节所讲解的错误异常处理中间件不冲突,可以同时使用。...不知道你有没有注意:当我们请求一个不存在的路径时,它的确跳转到404页面,但是,Url变了,变成了/Home/StatusCodeError?...使用过滤器进行错误处理 除了错误处理中间件外,ASP.NET Core 还提供了异常过滤器,用于错误处理。

    2.1K20

    或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧

    Bad Request 用于客户端一般性错误信息返回, 在其它 4xx 错误以外的错误,可以使用,错误信息一般置于 body 中 401 Unauthorized 接口需要授权访问,为通过授权验证...原来,在 ASP.NET Core 2.1 之后的版本中,对于 API 接口返回 400 的 HTPP 状态码默认返回 ProblemDetails 对象,因为这里我们并没有将接口中的返回 BadRequest...当然,当接口的 HTTP 返回状态码为 400 时,最终还是返回我们自定义的错误信息对象,所以这里为了不造成前后端对接上的歧义,我们最好将返回的对象信息作为参数添加到 ProducesResponseType...() 403 Forbid() 404 NotFound()   6、使用 Web API 分析器   在上面的示例中,因为我们需要指定接口需要返回的 HTTP 状态码,所以我们需要提前添加好 ProducesResponseType...在 ASP.NET Core 2.2 及以后更新的 ASP.NET Core 版本中,我们可以通过 Nuget 去添加 Microsoft.AspNetCore.Mvc.Api.Analyze 这个包,

    1.4K40
    领券