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

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\HasApiTokens trait,之后通过 $user->createToken('自定义令牌名称')->plainTextToken 生成明文令牌

二、错误Token访问返回方法不支持的问题解决

问题现象

使用错误Token访问受Sanctum保护的GET路由时,返回「The GET method is not supported for this route. Supported methods: POST」提示,而非预期的「unauthorized」。

解决方案

  1. 检查路由定义
    确保目标GET路由正确使用 Route::get() 声明,且路径未与其他POST路由冲突。示例:
// 正确的受保护GET路由
Route::middleware('auth:sanctum')->get('/api/user', function (Illuminate\Http\Request $request) {
    return $request->user();
});
  1. 验证中间件与路由匹配
    确认路由已正确绑定 auth:sanctum 中间件,避免请求未经过认证校验就被其他路由规则拦截。可通过 php artisan route:list 查看路由详情,检查目标路由的中间件和请求方法是否匹配。

  2. 清除路由缓存
    若之前生成过路由缓存,执行 php artisan route:clear 清除缓存,确保最新路由定义生效。

  3. 检查请求参数
    确认前端发送的是GET请求,且请求头中正确携带 Authorization: Bearer {token},避免请求方式错误或Token携带格式不正确。

  4. 排查路由优先级
    若存在通配符路由(如 Route::post('/{any}', ...)),可能会覆盖目标GET路由,需调整路由定义顺序,将具体路由放在通配符路由之前。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:05:27