Laravel 9 + Passport + Vue.js API调用401未授权问题求助
以下是针对你遇到的同middleware组部分接口401的具体排查步骤:
核对路由Middleware分组
检查api.php中返回401的路由,是否确实和/users/me、logout处于同一个auth:api中间件组内。留意是否存在拼写错误,或部分路由被意外排除在分组外:// 正确分组示例 Route::middleware('auth:api')->group(function () { Route::get('/users/me', [UserController::class, 'me']); Route::post('/logout', [AuthController::class, 'logout']); // 确保其他需授权路由也在该组内 Route::get('/posts', [PostController::class, 'index']); });验证Token的Scope权限
如果路由设置了Passport Scope,检查登录时获取的Token是否包含对应权限。比如部分路由可能添加了scopes中间件:Route::get('/posts', [PostController::class, 'index'])->middleware('scopes:view-posts');此时需确认登录请求是否申请了
view-postsScope,或移除不必要的Scope限制做测试。检查Token的有效性
查看数据库oauth_access_tokens表,确认当前使用的Token的expires_at未过期、revoked字段为0。若Token已过期或被吊销,即使请求头携带也会返回401。确认请求头格式与传递
使用Postman等工具手动携带Authorization: Bearer {token}请求头调用401接口,验证是否能正常访问。若Postman可访问,说明前端请求拦截器可能存在问题,比如部分接口未正确携带Token,或Token处理逻辑出错。检查Passport核心配置
确认config/auth.php中API Guard的驱动设置为Passport:'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],同时确保已执行Passport迁移命令
php artisan migrate,相关OAuth表已正常创建。查看Laravel错误日志
打开storage/logs/laravel.log,查找对应401请求的详细错误信息,日志会明确指出Token无效、权限不足或Scope不匹配等具体原因,这是最直接的排查依据。
内容的提问来源于stack exchange,提问作者Fadin1

