我们正在使用最新版本的Laravel
和Laravel Jetstream
,并希望实现一个功能,允许我们的管理员代表普通用户登录。这使我们能够在某些用户的帐户遇到问题时提供更好的支持。
这个函数看起来很完美,可以达到预期的结果:
Auth::loginUsingId(1);
不幸的是,我收到以下错误信息
Method IlluminateAuthRequestGuard::loginUsingId does not exist
经过一段时间,感谢Laravel Debugbar的帮助,我发现问题是由Laravel Sanctum
引起的。不包含上述功能,设置为middleware
保护approutesweb.php
文件中的路由。
从
更改middleware
后似乎可以工作Route::middleware(['auth:sanctum', 'verified'])
Route::middleware(['auth', 'verified'])
长话短说:是否有其他解决方案来做到这一点?或者更好:这是一个有效的解决方案吗?我可以从网络路由中删除Sanctum
吗?还是出于某种原因需要这样做?我们仍然希望使用Sanctum
来验证我们的移动应用程序,我们基于令牌的API。
Sanctum为API和spa(由API提供)的身份验证提供了一种简单的机制(与Passport相比)。
如果你不开发SPA,你不需要使用auth:sanctum
中间件,而是可以使用webauth
中间件。
您仍然可以并且应该在您的routes/api.php
文件中使用sanctum中间件。