Laravel中间件
来源:互联网 发布:node forever 重启 编辑:程序博客网 时间:2024/06/05 04:15
php artisan make:middleware <middleware-name>
使用你的中间件名称替换<middleware-name>。创建可以看到中间件在 app/Http/Middleware 目录。
示例
php artisan make:middleware AgeMiddleware
第3步 − AgeMiddlware 会在 app/Http/Middleware 文件中创建。新创建的文件将自动创建下面代码:
<?phpnamespace App\Http\Middleware;use Closure;class AgeMiddleware { public function handle($request, Closure $next) { return $next($request); }}
注册中间件
- 全局中间件
- 路由中间件
全局中间件将在应用程序的每个HTTP请求运行,而路由中间件将被分配到一个特定的路由。中间件可在 app/Http/Kernel.php 注册.
该文件包含两个属性: $middleware 和 $routeMiddleware。$middleware 属性用于注册全局中间件,$routeMiddleware属性用于注册路由指定中间件。
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \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,];
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,];
示例
我们已经在前面的例子中已创建 AgeMiddleware 中间件。 现在,我们可以在具体的路由中间件属性登记。注册代码如下所示。
<?phpnamespace App\Http;use Illuminate\Foundation\Http\Kernel as HttpKernel;class Kernel extends HttpKernel { protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \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, ]; protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'Age' => \App\Http\Middlware\AgeMiddleware::class, ];}
中间件参数
我们也可以传递中间件参数。例如,如果您的应用程序有不同角色,如用户,管理员,超级管理员等,并且要验证基于角色的动作,这可以通过参数传递中间件来实现。我们创建的中间件包含以下功能,我们可以通过 $next 参数之后,自定义参数。
public function handle($request, Closure $next) { return $next($request);}
示例
php artisan make:middleware RoleMiddleware
第3步 − 添加以下代码到新创建的角色中间件的处理方法 - app/Http/Middleware/RoleMiddleware.php.
<?phpnamespace App\Http\Middleware;use Closure;class RoleMiddleware { public function handle($request, Closure $next, $role) { echo "Role: ".$role; return $next($request); }}
第4步 − 在 app\Http\Kernel.php 文件中注册角色中间件。 加入灰色突出的线条的是在该文件中注册 RoleMiddleware 中间件。
php artisan make:controller TestController
app/Http/TestController.php
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;class TestController extends Controller { public function index(){ echo "<br>Test Controller."; }}
app/Http/routes.php
Route::get('role',[ 'middleware' => 'Role:editor', 'uses' => 'TestController@index',]);
http://localhost:8000/role
可终止的中间件
响应已经发送给浏览器后可终止中间件执行一些任务。这可以通过使用创建中间件“终止”方法的中间件来实现。可终止中间件会注册全局中间件。该终止方法将接受两个参数:$request 和 $response。终止方法可以被创建,如在下面显示的代码。
示例
php artisan make:middleware TerminateMiddleware
第3步 - 复制下面的代码到新创建文件 - TerminateMiddleware 在 app/Http/Middleware/TerminateMiddleware.php 文件中如下:
<?phpnamespace App\Http\Middleware;use Closure;class TerminateMiddleware { public function handle($request, Closure $next) { echo "Executing statements of handle method of TerminateMiddleware."; return $next($request); } public function terminate($request, $response){ echo "<br>Executing statements of terminate method of TerminateMiddleware."; }}
第4步 − 注册 TerminateMiddleware 到 app\Http\Kernel.php 文件中.
加了灰色突出的线条的是该文件中注册的 TerminateMiddleware 中间件。
php artisan make:controller ABCController
app/Http/ABCController.php
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;class ABCController extends Controller { public function index(){ echo "<br>ABC Controller."; }}
app/Http/routes.php
Route::get('terminate',[ 'middleware' => 'terminate', 'uses' => 'ABCController@index',]);
http://localhost:8000/terminate
- laravel 中间件
- Laravel中间件
- laravel中间件
- laravel中间件
- laravel中间件
- Laravel中间件
- Laravel中间件
- Laravel中间件
- laravel系列5-- 中间件
- laravel - 中间件使用
- 205 laravel 中间件实现
- laravel中间件源码分析
- Laravel 中间件建立使用
- Laravel中间件实现原理
- Laravel中间件实现原理
- Laravel Middleware 中间件
- laravel--(自定义中间件)
- Laravel基础-中间件
- 50X50矩阵内画正方形
- Mongodb如何使用wiredTiger?
- python 关于 #!/usr/bin/env python 与 #!/usr/bin/python的区别
- DS18B20温度传感器
- 分代垃圾回收
- Laravel中间件
- 典型配置
- 删除字符串中出现次数最小的字符及书写字符串函数时的一个注意点
- C++11新特性——容器相关(三)tuple
- oc中的一些常用方法
- 新一代的垃圾回收算法
- Python的APScheduler模块
- make menuconfig --资料查阅
- 我对MVC分层的理解