如何使用Laravel Sanctum分组受保护路由?遇守卫未定义错误
解决Laravel Sanctum路由分组及"Auth guard [:sanctum] is not defined"错误
错误原因
你遇到的错误是因为中间件语法写错了——Laravel中指定认证守卫的分隔符是单冒号:, 而非双冒号::,你写成了auth::sanctum,导致框架无法识别正确的守卫配置。
正确的路由分组写法
将中间件改为auth:sanctum即可,示例代码如下:
Route::group(['middleware' => ['auth:sanctum']], function(){ // 发送重置密码验证码 Route::post('/send-password-code', [ResetPasswordController::class, 'sendResetPasswordCode']); // 重置密码 Route::post('/reset-password', [ResetPasswordController::class, 'reset']); });
也可以使用更简洁的链式写法:
Route::middleware('auth:sanctum')->group(function () { Route::post('/send-password-code', [ResetPasswordController::class, 'sendResetPasswordCode']); Route::post('/reset-password', [ResetPasswordController::class, 'reset']); });
额外检查项
- 确保已正确安装并配置Laravel Sanctum:执行过
composer require laravel/sanctum,发布迁移文件并完成数据库迁移,同时config/auth.php的guards数组中存在sanctum配置(默认安装后会自动添加):
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'sanctum' => [ 'driver' => 'sanctum', 'provider' => 'users', 'hash' => false, ], ],
内容的提问来源于stack exchange,提问作者Thomas Arnel Madison Endomba
相关产品推荐
相关产品推荐

