我正在使用Laravel创建一个API。
我还使用Firebase身份验证进行用户身份验证。
我想将Firebase身份验证颁发的“idToken”视为承载令牌。
我想和圣所确认一下
由于idToken
用于承载令牌,因此不使用数据库。
但是,只有允许users表拥有令牌的示例。
我只想使用Firebase Authentication的verifyIdToken方法验证Bearer令牌。
我怎么能用圣所来处理这种案子
如果你能告诉我这件事,我将不胜感激。
P.S.我的母语不是英语,所以我为我糟糕的英语道歉。
1条答案
按热度按时间mctunoxg1#
这可能有点太晚了,但我留下了一个答案的人谁可能会偶然发现这一点,我面临着同样的情况,这里是我的解决办法:
步骤1.配置Firebase SDK:
确保你的Laravel项目中安装了Firebase Admin SDK。你可以通过Composer安装:
字符串
步骤2.创建Firebase认证中间件:
创建一个名为FirebaseAuthMiddleware的新中间件(或者您想叫它什么都行)
型
第三步:中间件编写
此中间件将使用之前安装的SDK提供的
verifyIdToken
方法型
步骤4.注册中间件:
您需要在
app/Http/Kernel.php
中注册此中间件,如下所示:型
第五步:使用新的中间件:
这就是firebase部分,现在你可以简单地在你的路由上使用这个中间件,就像你使用sanctum一样:
型
上述实现完全取决于您的路由,您可以根据您的用例使用其中一个或两个。
后续步骤:
由于您没有使用任何传统的令牌数据库,因此需要sanctum来识别用户,为此,我们可以创建一个令牌存储库,以便sanctum正常运行,以下是它的工作原理:
使用Sanctum的Token Repository Contract创建自定义Token Repository:
Laravel\Sanctum\Contracts\TokenRepository
在
AppServiceProvider
中绑定您的自定义token仓库型
上述步骤的实现:
如果你不明白上面的需要如何实现,请继续下面的操作。
Step 5.1:创建自定义Token仓库
首先,您需要创建一个自定义令牌存储库:
app/FirebaseTokenRepository.php
型
这就是它的令牌存储库是创建现在我们需要让我们的服务提供商知道使用这个并作出一些修改Sanctum的行为.
Step 5.2:绑定自定义Token仓库:
像这样更新
AppServiceProvider.php
:型
这告诉Laravel在需要与TokenRepository合约交互时使用新创建的自定义(firebase)令牌仓库。
Step 5.3:更新配置(如果您使用的是SPA):
现在我们需要防止Sanctum使用Laravel的会话进行身份验证。为此,请确保您没有在API中间件中使用
EnsureFrontendRequestsAreStateful
中间件,并且在sanctum.php
配置文件中更新stateful
密钥:型
致:
型
完成这一步后,我们就完成了,现在应用程序已经准备好与Firebase Authentication和Sanctum一起使用了。这个解决方案可能会根据laravel版本略有不同,任何类型的编辑都是受欢迎的。
Laravel 10
上实现的,PHP 8.1
在Blade Templates、React Native和NextJs上进行了测试。对于任何类型的语法错误,我们深表歉意。