如何仅保护我的控制器的特定路由?

Posted

技术标签:

【中文标题】如何仅保护我的控制器的特定路由?【英文标题】:How to protect only specific routes of my controller? 【发布时间】:2021-02-14 16:37:10 【问题描述】:

所以我有一个资源控制器,它的路由定义如下:

Route::resource('product', 'App\Http\Controllers\ProdutoController')->middleware('auth');

但是,我希望未登录的用户能够访问该控制器内的“显示”方法。如何将“auth”中间件应用于控制器内的每个方法,除了“show”方法?

【问题讨论】:

您可以从这里找到您的解决方案: more details... 【参考方案1】:

在您的 ProdutoController 中,您可以使用构造方法来应用身份验证中间件,但某些路由除外:

/**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    
        $this->middleware('auth')->except(['index', 'show']); 
    

【讨论】:

以上是关于如何仅保护我的控制器的特定路由?的主要内容,如果未能解决你的问题,请参考以下文章

如何将所有XML扩展路由到特定方法codeigniter?

我如何将 url 路由到 laravel 中的特定控制器并锚定到特定控制器

如何在路由中定义 PUT 方法仅限制为控制器中的 Put 方法而不使用参数?

仅使用 Spring Security 自定义令牌无状态保护 REST 控制器,同时保持常规状态完整 Web 登录正常工作

禁用特定文件夹/路由的 Laravel 路由

创建路由时如何指定应该使用哪些控制器?