.NET 9 Razor Pages Windows Auth模板与文档不符,以何为准?
关于.NET 9 Razor Pages Windows身份验证的问题解答
一、模板与官方文档的正确性判定
.NET 9的Razor Pages Windows身份验证模板是正确的,无需显式调用UseAuthentication:
- 在.NET 8及后续版本中,当通过
AddAuthentication().AddNegotiate()配置Windows身份验证时,框架会自动注册身份验证中间件,不再需要开发者手动调用UseAuthentication。 - 官方文档可能尚未同步更新.NET 9的这一简化逻辑,导致文档内容与实际模板生成代码存在差异。
二、开发环境中间件顺序报错的原因
开发环境使用IIS Express开启Windows身份验证时,若将app.UseStatusCodePagesWithReExecute("/StatusCode/{0}")置于身份验证逻辑前会报错,原因如下:
- 开发环境中Windows身份验证由IIS Express接管处理,
UseStatusCodePagesWithReExecute提前拦截请求,导致身份验证流程未完成就触发状态页跳转,引发权限相关错误。 - 发布至服务器后,要么是IIS完全接管身份验证流程,要么独立账户授权模式下中间件顺序的影响被抵消,因此不会出现该问题。
三、移除UseAuthentication对安全性的影响
移除UseAuthentication不会影响站点安全性:
- .NET 9中
AddNegotiate已自动完成身份验证中间件的注册工作,显式调用UseAuthentication属于冗余操作,甚至可能导致重复注册,但不会降低安全性。 - 确保站点安全的核心是正确配置
AddAuthentication和AddNegotiate,并启用UseAuthorization授权中间件,通过授权策略控制资源访问权限。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

