You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Resource Controller除show方法外的所有方法添加Auth认证

解决方案

要实现为Resource Controller的所有方法添加Auth认证但排除show方法的需求,你可以通过以下两种方式调整路由配置:

方法一:拆分路由(更直观)

将show方法单独定义为公开路由,其余资源路由保留在认证中间件组内,并排除show方法:

Route::get('/', function () {
    return view('welcome');
});

// 公开访问的show路由
Route::get('pdfs/{pdf}', [PdfController::class, 'show'])->name('pdfs.show');

// 受认证保护的其余资源路由
Route::middleware([
    'auth:sanctum',
    config('jetstream.auth_session'),
    'verified'
])->group(function () {
    Route::resource('pdfs', PdfController::class)->except(['show']);
});

方法二:直接在资源路由上指定中间件排除规则

通过链式调用middleware方法并传入except参数,一次性配置资源路由的认证规则:

Route::get('/', function () {
    return view('welcome');
});

Route::resource('pdfs', PdfController::class)
    ->middleware([
        'auth:sanctum',
        config('jetstream.auth_session'),
        'verified'
    ], ['except' => 'show']);

说明

  • 两种方式都能实现show方法无需认证即可访问,其余方法(如create、store、edit、update、destroy)必须通过认证才能访问。
  • 方法一中显式定义show路由并指定名称,确保route('pdfs.show')等路由生成函数能正常工作。

内容的提问来源于stack exchange,提问作者El Hussien Ramadan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:00:52