Laravel Jetstream - 是否需要 Sanctum 来保护网络路由?

时间:2021-02-15 09:30:49

标签: php laravel authentication laravel-sanctum jetstream

我们将最新版本的 ([Sum of all grades from one group] / [number of grades of one group]) Laravel 一起使用,并希望实现一项功能,以允许我们的管理员代表普通用户登录。这使我们能够在某些用户遇到帐户问题时提供更好的支持。

This function 似乎完美地达到了预期的结果:

Laravel Jetstream

很遗憾,我收到以下错误消息

Auth::loginUsingId(1);

一段时间后,多亏了 Laravel Debugbar 的帮助,我才发现问题是由 Method Illuminate\Auth\RequestGuard::loginUsingId does not exist 引起的。不包含上述功能,设置为Laravel Sanctum以保护middleware文件中的路由。

更改 app\routes\web.php from

后似乎有效
middleware

Route::middleware(['auth:sanctum', 'verified'])

长话短说: 是否有其他解决方案可以做到这一点?或者更好:这甚至是一个有效的解决方案吗?我可以直接从网络路由中删除 Route::middleware(['auth', 'verified']) 还是出于某种原因需要这样做?我们仍希望使用 Sanctum 来验证我们的移动应用程序基于令牌的 API。

1 个答案:

答案 0 :(得分:2)

Sanctum 提供了一种简单的机制(与 Passport 相比)来验证您的 API 和 SPA(由 API 提供服务)。

如果您不是在开发 SPA,则不需要使用 auth:sanctum 中间件,而是可以使用网络 auth 中间件。

您仍然可以并且应该使用 routes/api.php 文件中的 sanctum 中间件。