Laravel VueJs多租户API返回200却返回Blade页面求助
针对你遇到的租户API路由返回Blade页面、前端出现TypeError: Cannot read properties of undefined的问题,可按以下步骤排查解决:
检查租户路由中间件配置
确保tenant.php中的API路由组仅使用api和租户相关中间件,避免混入web中间件(web中间件会触发视图渲染逻辑)。示例正确配置:Route::middleware(['api', 'tenant']) ->prefix('api') ->group(function () { Route::get('user/auth', [UserController::class, 'GetUserAuth'])->name('api.user.auth'); });确认路由匹配优先级
运行php artisan route:list --tenant查看租户路由列表,检查GetUserAuth路由的控制器和中间件是否正确关联。同时排查web.php中是否存在同名路由,Laravel会按定义顺序匹配,若web路由先定义会优先返回视图。修正Passport租户环境配置
确保Passport路由仅在租户环境注册,可在TenancyServiceProvider的boot方法中处理:public function boot() { $this->bootTenancy(); $this->routes(function () { if (tenant()) { Passport::routes(); } }); }验证
.env中PASSPORT_PRIVATE_KEY和PASSPORT_PUBLIC_KEY的路径及文件权限,确保租户能正常读取密钥。排查中间件冲突
临时移除租户路由组中的非必要中间件,逐步测试定位是否有中间件篡改了请求响应逻辑,导致API请求被强制返回视图。校验前端请求参数
确认前端请求携带Accept: application/json请求头,否则Laravel会默认返回HTML视图。同时检查请求URL是否正确指向租户域名的API前缀(如your-tenant.test/api/user/auth)。清除路由缓存
执行以下命令清除路由缓存,避免旧配置残留:php artisan route:clear php artisan tenancy:route:clear
内容的提问来源于stack exchange,提问作者Ignacio Yamagiwa Cuéllar

