ThinkPHP 5.1 中间件笔记 作者: Chuwen 时间: 2019-05-08 分类: PHP > ### 在用 ThinkPHP 写 API 的时候,在同一个模块下,有些方法(function)需要校验登录,有一些方法(function)不需要检验登录,然后我使用了“笨方法”,需要进行校验登录的方法(function)上都得写几行判断是否登录的,导致代码冗余,代码质量不高,今天仔细阅读了 *ThinkPHP 5.1* 开发文档,学习了一个新技能——中间件(https://www.kancloud.cn/manual/thinkphp5_1/564279) > 在此记录下,因为对 ThinkPHP 框架 了解不够深入,难免有错误之处,请dalao指点更正???? --- # 创建中间件 > Think PHP 5.1 关于中间件详细用法请查看官方文档:https://www.kancloud.cn/manual/thinkphp5_1/564279 ## 方法一: 使用命令创建快捷创建(需要设置好 PHP 变量,你看不懂这个你看下一个方法吧): ``` php think make:middleware Auth ``` > 不出意外,会返回如下提示: > ``` E:\PhpStorm_Project\x.nowtime.cc>php think make:middleware Auth Middleware created successfully. >``` > 然后就会在 `application/http/middleware` 路径下创建一个 `Auth.php` 文件 ## 方法二: 手动创建 `application/http/middleware/Auth.php` 文件 # 编写代码 编辑 `application/http/middleware/Auth.php` 文件,编写业务逻辑: ```php 假设有 `application/api/controller/Query.php` 文件, > 假设方法 `update`、`post` 不需要校验登录, > 而 `list`、`log` 方法需要校验登录,我们则可以这样写 ```php [ 'except' => [ 'update', 'post' ] ] ]; public function update() { return '这是 index 方法'; } public function post() { return '这是 post 方法'; } public function list() { return '这是 list 方法'; } public function log() { return '这是 log 方法'; } } ``` ## 案例二: > 假设有 `application/api/controller/Query.php` 文件, > 假设仅方法 `log` 需要校验登录,而其它方法不需要校验登录,我们则可以这样写 ```php [ 'only' => [ 'log' ] ],//仅 log 方法使用中间件 Auth 校验,其他都需要 ]; public function update() { return '这是 index 方法'; } public function post() { return '这是 post 方法'; } public function list() { return '这是 list 方法'; } public function log() { return '这是 log 方法'; } } ``` 标签: PHP, ThinkPHP