PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > laravel框架--练习路由中间件--2019年11月8日

laravel框架--练习路由中间件--2019年11月8日

Victor的博客
Victor的博客 原创
2019年11月30日 19:30:39 1119浏览

创建一个路由中间件,并通过访问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






声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议