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

Laravel Jetstream - Is Sanctum required to protect the web routes?

我们正在使用最新版本的 LaravelLaravel Jetstream,并希望实现一项功能以允许我们的管理员代表普通用户登录。如果某些用户的帐户出现问题,这使我们能够提供更好的支持。

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

Auth::loginUsingId(1);

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

Method Illuminate\Auth\RequestGuard::loginUsingId does not exist

一段时间后,感谢 Laravel Debugbar 的帮助,我发现问题是由 Laravel Sanctum 引起的。不包括上述功能,设置为middleware,保护app\routes\web.php文件中的路由。

middleware

更改后似乎有效
Route::middleware(['auth:sanctum', 'verified'])

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

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

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

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

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