Blogger Information
Blog 35
fans 0
comment 0
visits 44050
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
laravel框架--练习路由中间件--2019年11月8日
Victor的博客
Original
1145 people have browsed it

创建一个路由中间件,并通过访问url地址来触发中间件输出“Hello MiddleWare”


【1】Laravel中间件:

1、可以过滤访问应用的 HTTP 请求。例如,在中间件里进行用户身份验证。如果用户未被认证,中间件会将用户重定向到登录界面。如果用户通过身份验证,中间件将进一步允许请求到应用程序中。

2、可以使用中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。

【2】创建中间件的方法:

使用脚手架自动创建:php artisan make:middleware 中间件名称。该命令会在 app/Http/Middleware 目录下创建一个新的 中间件 类

创建好的基本结构如下:

<?php
namespace App\Http\Middleware;
use Closure;
class MyName
{
    public function handle($request, Closure $next)
    {
        if (?) {
            return redirect('home');
        }
        return $next($request);
    }
}


【3】中间件特性

  • 全局中间件:如果自定义的中间件要处理每个 HTTP 请求,需要在 app/Http/Kernel.php 中的 $middleware 属性中列出这个中间件,这样就可以为路由分配此中间件。

  • 中间件组件:可以一个键把多个中间件打包成一个组,方便将他们应用到路由中去。需要使用 Http 核心的 $middlewareGroups 属性。使用方法如下:

  • Route::get('/', function () {    //})->middleware('web');

  • Route::group(['middleware' => ['web']], function () {    //});

  • 中间件可以使用 app/Http/Kernel.php 文件的 $middlewarePriority 属性指定优先级,也可以附加参数,定义路由时通过一个 : 来隔开中间件名称和参数来指定中间件参数。多个参数就使用逗号分隔。

  • 在中间件上调用 terminate 方法的时候, Laravel 将从 服务容器 中解析出一个新的中间件实例。如果在调用 handle 和 terminate 方法的同时使用相同的中间件实例,请使用容器的 singleton 方法在容器中注册中间件。

【4】练习使用中间件

  • 创建中间件CheckAge :php artisan make:middleware CheckAge

  • 注册中间件别名:

1setmiddle.jpg

  • 应用到路由中:Route::get('/middle', 'Test@middle')->middleware('checkage');

  • 中间件Handle中代码:

实例<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge {
	public function handle($request, Closure $next) {
		//$username =
		echo 'Hello MiddleWare!';
		return $next($request);
	}
}
运行实例 »点击 "运行实例" 按钮查看在线实例
  • 运行效果:

2result.jpg






Correction status:qualified

Teacher's comments:中间件的创建过程 , 一定要记住, 不可颠倒
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post