Rumah pembangunan bahagian belakang tutorial php 什么是中间件?听灭绝师太趣说laravel中间件(图)

什么是中间件?听灭绝师太趣说laravel中间件(图)

Jul 13, 2018 pm 01:57 PM

什么是中间件?听灭绝师太趣说laravel中间件(图)

这篇文章主要介绍了关于什么是中间件?听妙绝师太趣说laravel中间件(图),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

什么是中间件?中间件顾名思义就是中间的件, 中间的层, 过滤一些请求的, 例如一些简单的token验证;以下文章详细讲解了laravel定义中间件和注册中间件的方法和技巧。

一.定义中间件

标注的laravel可以直接在命令里面定义

php artisan make:middleware CheckToken

这样就创建好了一个叫CheckToken的中间件类, 这个类在/app/Http/Middleware目录下:

 图片1.png

点开以后代码长这样:

 图片2.png

然后就可以去里面写点东西. 例如:

public function handle($request, Closure $next)
{
    if($request->input('token')!='minxintoken'){
        return redirect()->to('http://www.baidu.com');
    }
    return $next($request);
}
Salin selepas log masuk

意思很明显, 如果发送过来的数据里面'token'字段不等于minxintoken那么就自动跳转到http://www.baidu.com

当然了到此为止只是创建好了一个叫CheckToken的中间件, 并没有启用; 现在开始启用;

二.注册中间件

所谓的启用, 就是将这个中间件注册到指定路由中;

注册分两种, 全局中间件和指定路由中间件,

1. 全局中间件:

只要把相应中间件添加到app/Http/Kernel.php的数组属性$middleware中就ok: (原文直接写的CheckToken::class是不行的 会报App\Http\CheckToken不存在, 需要加上CheckToken.php的namespace才能正确获取到CheckToken)

正解如下:

图片3.png

浏览器直接输入sample.test/about就会直接蹦到www.baidu.com去, 但是这么玩就不会:

图片4.png

ok全局注册到此为止. 一般来说全局设置不建议也不赞成, 因为每次都要带上token确实是烦球;

2.然后就来看看指定路由的中间件,

这种中间件, 首先需要在app/Http/Kernel.php中分配给中间件一个key, 添加在该文件的$routeMiddleware里面, 原里面已经有很多个默认的key, 在后面追加一个就行:

图片5.png

加好了key以后, 去路由文件里面启用

Route::get('/','StaticPagesController@home')->middleware('token');
Salin selepas log masuk

这样访问浏览器的效果就是直接输sample.test/会重定向到百度, 而输sample.test/?token=minxintoken就能进入到主页

图片6.png

当然了, 这样有个弊端就是来一个路由, 要用就要敲一下, 不正常; 所以还有一个骚操作就是在Kernel.php文件里面有一个叫$middlewareGroups的数组:   我们在web里面把我们刚刚创建的CheckToken加进去,

 图片7.png

然后所有的/route/web.php里面的东西就要token=minxintoken才能访问了;例如什么sample.test/  sample.test/about   sample.test/help 等等;

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关课程推荐:

最新laravel商城实战视频教程

全方位解读Laravel框架及实战视频教程

轻松学会Laravel-基础篇

Atas ialah kandungan terperinci 什么是中间件?听灭绝师太趣说laravel中间件(图). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Respons HTTP yang dipermudahkan dalam ujian Laravel

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Pengenalan kepada API Instagram

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

12 skrip sembang php terbaik di codecanyon

Pemberitahuan di Laravel Pemberitahuan di Laravel Mar 04, 2025 am 09:22 AM

Pemberitahuan di Laravel

See all articles