.net – 为什么UseAuthentication必须在.NET Core 2.0中的UseMvc
在NET Core 2.0中我有:
app.UseAuthentication(); app.UseMvc(); 我的应用程序正确处理JWT授权标题,但当上面的行以不同的顺序 app.UseMvc(); app.UseAuthentication(); 魔法可以发生.喜欢第一个请求,一切都很好,但第二个,收到401响应(这种行为是最有趣的). 所以问题是为什么这两个中间件的顺序有这么奇怪的影响?我理解正确的顺序,但我不理解第一次请求中的奇怪行为 解决方法
因为在Configure方法中声明的中间件的实际顺序实际上很重要.中间件定义请求将经历的管道.最简单的中间件可以像这样定义
app.Use(async (context,next) => { await next.Invoke(); }); 在此示例中,next.Invoke()之前的代码将在请求传递到链中的下一个中间件之前执行.当所有后续中间件都被执行后,所有事情都会被执行.现在您的问题是在MVC之前定义了身份验证中间件,因为通过这种方式,身份验证中间件可以停止请求并返回HTTP状态403(如果无法进行身份验证)或HTTP状态302以将请求重定向到登录页面. 至于您的具体情况,第一个请求最有可能与配置的路由匹配,因此请求由MVC控制器处理并生成响应,而不是将其传递给下一个(身份验证)middlware.对于第二个请求(我猜它是不同的),MVC框架没有找到与此请求匹配的路由器,因此它只是将其转发给下一个中间件,希望它知道如何处理它. 另一个原因是当另一个请求命中需要授权的请求时,第一个请求命中操作不需要授权请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – web.config文件中的自定义错误页面未涵盖所有UR
- asp.net-web-api – 无法加载文件或程序集’System.Web.Htt
- ASP.NET FileUpload
- Azure中的ASP.NET会话状态提供程序[closed]
- asp.net – 显示为普通html的.cshtml文件
- ASP.NET MVC捆绑缓存. (检测css文件更改)(内部行为)
- asp.net-mvc – 从URL mvc中省略控制器名称
- [ASP.net] GridView抓各Field值的方法
- ASP.NET的延迟作业是否运行异步代码?
- asp.net-mvc – 在Azure上使用LocalDb MDF文件
- asp.net – App_Data文件夹中的图像未显示在浏览
- asp.net-mvc – 获取ASP.Net MVC中任何文件的完整
- asp.net – 界面的好处是什么意味着某种实现?
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MV
- asp.net-core-2.0 – 如何在Razor Pages中使用单
- asp.net-mvc – Razor – 渲染没有Render()且没有
- asp.net Web应用程序中的静态变量
- 为什么在ASP.Net中向StatusDescription添加换行符
- datetime – 将时间转换为UTC vbScript
- asp.net – 在中等信任下,在GMail SMTP上发送电子