博主信息
博文 35
粉丝 0
评论 0
访问量 51743
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
laravel框架--练习路由中间件--2019年11月8日
Victor的博客
原创
1409人浏览过

创建一个路由中间件,并通过访问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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学