创建中间件php think make:middleware AuthMiddleware
图片8.png
就会默认创建中间件以及配置文件
图片9.png
创建好的AuthMiddleware
图片10.png
案例:
图片11.png
什么是中间件?
中间件看成是一个过滤器;
就好比,混水->清澈的水 过滤器 一层层的过滤水中的杂质 过滤器
用户请求的时候--> 第一层中间获取用户的请求的header头判断用户当前访 问项目是否安全->第二层判断当前用户访问的项目中的模块是否权限操作 -> 执行到控制器中的方法->执行之后的操作
为什么使用中间件?
过滤用户的请求,保障系统安全
什么时候使用呢?
1.Api平台开发 来对于用户的请求header做一个过滤
2.Api平台开发 只允许post,不允许get
3.在做权限认证的时候使用Auth权限认证
生效:全局所有模块执行的时候都会访问到
图片12.png
只希望单独一个模块起作用就可以放在对应模块下middleware.php
比如:下面就只对于index模块起作用而对于test模块不起做用
图片13.png
单独某个地方起作用
只需要在控制器中重写think\Controller中的
图片14.png
子类中的使用
图片15.png
通过 only,except设置中间件对于方法生效的限制
// 'except' => ['demo'] 设置中间件只针对于 某一个方法不起效果
// 'only' => ['demo'] 设置中间件只针对于 某一个方法起效果
我们可以\app\http\middleware\AuthMiddleware::class
图片16.png
也可以写中间件的类名AuthMiddleware
图片17.png
为什么两种写都可以?
因为在config中middleware.php就配置了中间件的命名空间
图片18.png
在tp执行的时候会先获取执行的中间件,如果是一个类名就会获取配置文件并添
加命名空间,如果是全命名则不需要