如何为Laravel的API路由添加Sanctum认证中间件?
解决API路由在Blade中无法获取认证用户的问题
要让API路由支持Blade中的认证功能,直接给orders路由组添加和Web路由一致的中间件即可——因为Blade模板依赖Web会话完成认证,API路由需要兼容这种会话认证逻辑。
修改api.php中的路由代码如下:
Route::prefix('orders') ->as('orders.') ->controller(OrderController::class) ->middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']) ->group(function(){ Route::get('index', 'index')->name('index'); });
关键说明
auth:sanctum:Laravel Sanctum中间件,同时支持API令牌认证和Web会话认证,适配你的混合路由场景。config('jetstream.auth_session'):Jetstream的会话认证中间件,确保Web端的会话能被API路由识别。verified:校验用户邮箱是否已激活,和Web路由保持一致的身份验证规则。
添加中间件后,在Blade中调用该API路由时,就能正常通过auth()->user()获取当前认证用户了。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

