Laravel 分组路由啥是最好的前缀或中间件

Posted

技术标签:

【中文标题】Laravel 分组路由啥是最好的前缀或中间件【英文标题】:Laravel grouping routes what is best prefix or middlewareLaravel 分组路由什么是最好的前缀或中间件 【发布时间】:2018-06-08 05:12:42 【问题描述】:

当我开始考虑对路线进行分组并查看文档时。我在那里输了。前缀、中间件等东西太多了。

对路线进行分组的最佳方式是什么?

Route::group(['middleware' => 'admin'], function () );

Route::group(['prefix' => 'admin'], function () );

Route::group(['namespace' => 'admin'], function () )

哪种方法最好?为什么?什么时候用什么方法?

【问题讨论】:

没有最好的方法。前缀、中间件和命名空间有不同的用途。 你能详细说明他们的目的吗? 嗯,几年前我的一个愚蠢问题 【参考方案1】:

两者不同但同时使用两者 路由中间件分组和路由前缀的最佳技术避免不必要的输入

Route::group(['prefix' => 'admin','middleware' => ['auth:admin']], function() 
    Route::get('dashboard','AdminController@dashboard');
);

【讨论】:

【参考方案2】:

等等。前缀和中间件是两个不同的东西

prefix 是一种为路线添加前缀并避免不必要的输入的方法,例如:

Route::get('post/all','Controller@post');
Route::get('post/user','Controller@post');

这可以使用前缀post进行分组

Route::group(['prefix' => 'post'], function()
    Route::get('all','Controller@post');
    Route::get('user','Controller@post');
)

另一方面,中间件:

中间件提供了一种方便的机制来过滤进入您的应用程序的 HTTP 请求。例如,Laravel 包含一个中间件,用于验证您的应用程序的用户是否经过身份验证。如果用户未通过身份验证,中间件会将用户重定向到登录屏幕。但是,如果用户通过了身份验证,中间件将允许请求进一步进入应用程序。

例如,现在使用最后一个示例,我希望用户在我的发布路线中进行身份验证。我可以像这样将中间件应用到这个组:

Route::group(['prefix' => 'post', 'middleware' => ['auth']], function()
        Route::get('all','Controller@post');
        Route::get('user','Controller@post');
    )

您应该查看文档以获取更多信息。

https://laravel.com/docs/5.5/middleware

https://laravel.com/docs/5.5/routing#route-groups

【讨论】:

它就像一个过滤器。在您的请求到达控制器之前(或之后,取决于中间件类型),中间件会处理请求并执行验证、更正等操作...... 酷,如何对所有管理路由进行分组。像 admin/sales/report、admin/sales/report/edit/1 ??? 酷,如何对所有管理路由进行分组。像 admin/sales/report、admin/sales/report/edit/1 ??? 'prefix' => 'admin/sales/report' 和您的路线内

以上是关于Laravel 分组路由啥是最好的前缀或中间件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.1 路由 -路由分组

Laravel 5.0.* 中间件在处理路由之前从 url 中删除前缀语言环境

关于laravel5.5路由的一些问题,持续更新

在Laravel中使用Middleware进行身份验证

将 Auth 中间件应用于所有 Laravel 路由

角度路由:字符串中间或前缀之后的参数