Laravel Sanctum配置方法及错误Token访问异常问题解决
Laravel Sanctum 配置指南及常见问题解决
一、Laravel Sanctum 基础配置方法
- 安装依赖:在项目根目录执行
composer require laravel/sanctum - 发布配置与迁移文件:运行
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider",随后执行数据库迁移php artisan migrate - 配置API中间件:打开
app/Http/Kernel.php,在api中间件组中添加Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,确保auth:sanctum中间件可正常调用 - 配置跨域(CORS):修改
config/cors.php,将supports_credentials设置为true,并在allowed_origins中添加前端域名,paths包含API路由前缀 - 生成API Token:在用户模型(如
app/Models/User.php)中引入Laravel\Sanctum\HasApiTokenstrait,之后通过$user->createToken('自定义令牌名称')->plainTextToken生成明文令牌
二、错误Token访问返回方法不支持的问题解决
问题现象
使用错误Token访问受Sanctum保护的GET路由时,返回「The GET method is not supported for this route. Supported methods: POST」提示,而非预期的「unauthorized」。
解决方案
- 检查路由定义
确保目标GET路由正确使用Route::get()声明,且路径未与其他POST路由冲突。示例:
// 正确的受保护GET路由 Route::middleware('auth:sanctum')->get('/api/user', function (Illuminate\Http\Request $request) { return $request->user(); });
验证中间件与路由匹配
确认路由已正确绑定auth:sanctum中间件,避免请求未经过认证校验就被其他路由规则拦截。可通过php artisan route:list查看路由详情,检查目标路由的中间件和请求方法是否匹配。清除路由缓存
若之前生成过路由缓存,执行php artisan route:clear清除缓存,确保最新路由定义生效。检查请求参数
确认前端发送的是GET请求,且请求头中正确携带Authorization: Bearer {token},避免请求方式错误或Token携带格式不正确。排查路由优先级
若存在通配符路由(如Route::post('/{any}', ...)),可能会覆盖目标GET路由,需调整路由定义顺序,将具体路由放在通配符路由之前。
内容的提问来源于stack exchange,提问作者codeanywhere
相关产品推荐
相关产品推荐

