Laravel 5 Resourceful Routes Plus中间件

时间:2015-02-25 20:45:21

标签: laravel laravel-5 routes laravel-routing laravel-middleware

是否可以将中间件添加到资源丰富路由的所有或部分项目中?

例如......

<?php

Route::resource('quotes', 'QuotesController');

此外,如果可能,我希望除了indexshow之外的所有路由都使用auth中间件。或者这是否需要在控制器内完成?

5 个答案:

答案 0 :(得分:90)

QuotesController构造函数中,您可以使用:

$this->middleware('auth', ['except' => ['index','show']]);

参考:Controller middleware in Laravel 5

答案 1 :(得分:53)

您可以使用路由组与中间件概念: http://laravel.com/docs/master/routing

Route::group(['middleware' => 'auth'], function()
{
    Route::resource('todo', 'TodoController', ['only' => ['index']]);
});

答案 2 :(得分:3)

在使用php 7的laravel 5.5中,在我编写

之前,我没有用多方法排除我的工作
Route::group(['middleware' => 'auth:api'], function() {

Route::resource('categories', 'CategoryController', ['except' => 'show,index']);
});

也许可以帮助别人。

答案 3 :(得分:3)

LARAVEL 8.x 的更新

web.php:

Route::resource('quotes', 'QuotesController');

在您的控制器中:

public function __construct()
{
        $this->middleware('auth')->except(['index','show']);
        // OR
        $this->middleware('auth')->only(['store','update','edit','create']);
}

参考:Controller Middleware

答案 4 :(得分:0)

一直在寻找Laravel 5.8+的更好解决方案。

这就是我所做的:

将中间件应用于资源,除了那些您不希望应用中间件的人。 (在这里显示索引)

 Route::resource('resource', 'Controller', [
            'except' => [
                'index',
                'show'
            ]
        ])
        ->middleware(['auth']);

然后,创建第一个路由以外的资源路由。所以索引并显示。

Route::resource('resource', 'Controller', [
        'only' => [
            'index',
            'show'
        ]
    ]);