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

如何使用Sanctum结合Firebase Authentication实现Laravel API认证

实现方案

本方案完全不需要在数据库存储令牌,所有校验逻辑直接对接Firebase的idToken校验接口,适配Sanctum的认证体系,具体步骤如下:

前置准备

  • 安装Firebase官方PHP SDK:composer require kreait/firebase-php
  • 下载Firebase服务账号JSON凭据文件,放入项目storage目录,在.env中添加配置:FIREBASE_CREDENTIALS=/storage/firebase/service-account.json

步骤1:自定义Sanctum令牌校验逻辑

打开app/Providers/AppServiceProvider.php,在boot方法中覆盖Sanctum默认的令牌校验逻辑:

use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\Sanctum;
use Kreait\Firebase\Factory;
use Kreait\Firebase\Exception\Auth\FailedToVerifyToken;

public function boot()
{
    Sanctum::authenticateAccessTokensUsing(function ($bearerToken) {
        // 初始化Firebase Auth实例(可提前注册到服务容器做单例优化)
        $firebaseAuth = (new Factory())
            ->withServiceAccount(env('FIREBASE_CREDENTIALS'))
            ->createAuth();

        try {
            // 直接调用Firebase方法校验idToken合法性
            $verifiedToken = $firebaseAuth->verifyIdToken($bearerToken);
            $firebaseUid = $verifiedToken->claims()->get('sub');
            
            // 按需关联本地users表用户,不需要存储用户可跳过该步直接返回自定义用户实例
            $user = \App\Models\User::where('firebase_uid', $firebaseUid)->first();
            if (!$user) {
                return false;
            }

            Auth::setUser($user);
            return $user;
        } catch (FailedToVerifyToken $e) {
            // 令牌过期、签名无效等校验失败场景直接返回false
            return false;
        }
    });
}

步骤2:配置认证守卫

打开config/auth.php,将API守卫的驱动设置为Sanctum:

'guards' => [
    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
    ],
],

步骤3:路由使用

在需要认证的API路由上添加auth:sanctum中间件即可,前端请求时携带Authorization: Bearer <firebase签发的idToken>请求头即可完成认证。

Route::group(['middleware' => 'auth:sanctum'], function () {
    // 你的业务API路由
    Route::get('/user/profile', function () {
        return request()->user();
    });
});

可选优化

  • 将Firebase Auth实例注册到服务容器作为单例,避免每次校验都重新初始化实例,提升接口性能
  • 如果完全不需要本地用户存储,可直接返回自定义的无持久化用户实例,不需要操作任何数据库表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:36:03