You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel多租户应用API路由认证失败问题求助

解决Laravel Tenancy for Laravel租户API Sanctum认证失败问题

以下是针对租户API返回"Unauthenticated."问题的排查和解决步骤:

1. 确认租户User模型已引入HasApiTokens trait

中心用户模型通常已添加该trait,但租户的User模型可能遗漏。打开租户环境下的App\Models\User.php,确保引入并使用:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    // ... 其他代码
}

2. 配置租户Sanctum的状态域

复制中心的config/sanctum.php到租户配置目录(config/tenant/sanctum.php),更新stateful配置允许租户域名:

return [
    'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
        '%s%s',
        'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
        env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : ''
    ))),
    // 其他配置保持不变
];

同时在.env中添加租户域名:

SANCTUM_STATEFUL_DOMAINS=localhost,foo.localhost,bar.localhost

3. 确保租户路由正确应用中间件

修改routes/tenant.php,为API路由包裹api中间件组,同时给令牌生成路由添加web中间件(确保用户已通过session认证):

// routes/tenant.php
// 租户API路由需api中间件支持
Route::middleware('api')->group(function () {
    require __DIR__.'/tenant/api.php';
});

// 令牌生成路由需web中间件确保session登录状态
Route::middleware('web')->get('/user/issue-token', [UserController::class, 'issueAPIToken'])->name('users.api.token');

4. 验证令牌生成时的租户上下文

在issueToken方法中添加日志,确认当前请求是否处于租户上下文:

public function issueToken()
{
    // 日志记录当前租户与认证用户信息
    logger()->info('Current tenant:', ['tenant_id' => tenancy()->tenant?->id]);
    logger()->info('Authenticated user:', ['user_id' => Auth::id()]);
    
    $user = Auth::user();
    $token = $user->createToken('authToken')->plainTextToken;

    return response()->json(['token' => $token], 200);
}

如果日志无租户信息,需检查Tenancy包的租户域名识别配置是否正确。

5. 确保租户数据库已执行Sanctum迁移

Sanctum的personal_access_tokens表必须存在于租户数据库中,执行以下命令:

# 先发布Sanctum迁移(未发布过的话)
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

# 执行租户迁移
php artisan tenants:migrate

6. 检查请求头格式

确认Postman中Authorization头格式正确:

  • 头名严格为Authorization
  • 值格式为Bearer + 令牌(注意Bearer后有一个空格),例如:Bearer 5|jhA....

内容的提问来源于stack exchange,提问作者Maison012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:11:18