.NET 8 Blazor Server API调用返回登录页问题排查
问题原因分析:Blazor Server API调用返回登录页面
以下是导致该问题的常见原因:
端点映射顺序错误:如果在配置中间件时,先注册了Blazor的 fallback 路由(
MapFallbackToPage("/_Host")),再注册API控制器路由(MapControllers()),那么所有未被前面路由匹配的请求(包括合法的API请求)都会被Blazor的fallback路由接管,直接跳转至登录页面。Blazor的fallback路由优先级高于后续注册的API路由,会覆盖未匹配的请求。认证中间件配置不当:
- 若
UseAuthentication和UseAuthorization中间件的注册顺序晚于Blazor端点配置,API请求在经过认证检查前就会被Blazor路由处理,触发登录跳转。 - 未为API端点单独指定JWT Bearer认证策略,导致API请求使用了Blazor页面的Cookie认证逻辑,当Bearer Token未被正确识别时,系统会重定向到登录页面而非返回401未授权响应。
- 若
路由路径冲突:API的路由路径与Blazor页面的路由路径重复(例如API路由为
/api/user,而Blazor恰好有一个匹配/api/user的页面路由),此时Blazor的路由系统会优先匹配页面路由,返回登录页面而非API数据。Fallback路由捕获范围过大:Blazor Server的
MapFallbackToPage默认会捕获所有未匹配的GET请求,如果你的API接口使用GET方法,且路由未被MapControllers正确匹配,就会被fallback路由导向_Host页面,进而触发登录流程。
内容的提问来源于stack exchange,提问作者user3656651
相关产品推荐
相关产品推荐

