Laravel 5.2 新特性系列 -- 中间件组的定义及使用
不管你创建的Laravel应用体量有多大,路由文件 routes.php的体积都会随之变得越来越大。对我而言创建一个新应用首先要做的就是根据业务逻辑对路由文件进行拆分和分组,比如“admin”、“auth”、“public”等。通常分组的每个部分都有其对应的中间件设置,例如, admin会用到一个 auth中间件,API分组可能会有不同的 auth中间件,并且会有指定的限制访问频率的中间件。
Laravel5.2 引入了中间件组的概念,这是一个为路由规则使用多个中间件的快捷方式,只需要定义一个中间件组key即可。
注:即使你不想使用中间件组,也可以继续往下看,因为这是Laravel全局中间件堆栈的一次重大改变。
所以还记得上面提到的admin的那个例子吗?现在我们可以为其创建一个“admin”中间件组,下面我们就来细说如何创建并使用中间件组。
1、定义中间件组
你可以在 app\Http\Kernel.php中定义中间件组,该类中有个新数组属性 $middlewareGroups,该数组的键是中间件组的名字,值是对应的中间件。
Laravel默认为我们提供了 web和 api中间件组:
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', ],];
正如你所看到的, $middlewareGroups的键可以是中间件类名也可以是指定路由中间件的别名如 throttle或 auth,下面我们来创建 admin中间件组:
protected $middlewareGroups = [ 'web' => [...], 'api' => [...], 'admin' => [ 'web', 'auth', ]];
我们已经定义了 admin中间件组使用 web(另一个中间件组)和 auth(路由中间件别名),就是这么简单!
与Laravel 5.1的不同之处
你可能已经注意到了, web中的中间件就是 Laravel 5.1 及之前版本中被应用到每个路由的中间件,这是一个思想上的重大提升:没有被分配web中间件组的路由将不会有cookies、sessions或者CSRF功能。比如只分配 api中间件组的路由就是这样。
2、使用中间件组
我们已经创建了中间件组,接下来该如何使用它呢?
如果你看过 Laravel 5.2 的 routes.php将会很清楚:
Route::get('/', function () { return view('welcome');});Route::group(['middleware' => ['web']], function () { //});
正如你所看到的,你可以像使用路由中间件一样使用中间件组:既可以设置为指定的中间件,也可以是中间件数组,所以我们可以这样使用中间件组 admin:
Route::group(['middleware' => 'admin'], function () { Route::get('dashboard', function () { return view('dashboard'); });});
就是这么简单!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。
