Laravel Jetstream - 是否需要 Sanctum 来保护网络路由?
Laravel Jetstream - Is Sanctum required to protect the web routes?
我们正在使用最新版本的 Laravel
和 Laravel 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 中间件。
我们正在使用最新版本的 Laravel
和 Laravel 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 中间件。