# 中间件
中间件可以在执行过程中自动运行的部件,中间件主要对http请求进行拦截处理。比如,我们可以在执行控制器方法时自动使用“中间件”完成用户登录验证操作。
[TOC]
## 创建中间件
中间件需要创建在 system/middleware 目录中,可以通过命令快速的进行创建:
```
php hd make:middleware Auth
```
生成文件如下:
```
namespace system\middleware;
class Auth {
//执行中间件
public function run($next){
echo "中间件执行了";
$next();
}
}
```
## 全局中间件
全局中间件会在应用启动时自动执行,不需要人为调用系统会自动执行全局中间件。
修改配置文件 system/config/middleware.php 中的global配置段来设置中间件处理类。
#### 配置
修改配置文件 system/config/middleware.php 中的global配置段
```
'global' => [
\system\middleware\Boot::class,
\system\middleware\Auth::class
]
```
## 应用中间件
应用中间件不会自动执行,需要开发者自行调用。
#### 系统内置中间件
可以通过创建中间类来执行
| 中间件 | 说明 |
| --- | --- |
| database_query | 数据库查询操作 |
| database_execute | 数据库更新/删除/插入操作 |
#### 配置
修改配置文件 system/config/middleware.php 中的 web配置顶
```
'web' => [
'auth'=>[
\system\middleware\Auth:class,
\system\middleware\Hd:class
]
]
```
#### 执行
使用中间件服务的 web() 方法运行应用中间件
```
Middleware::web('auth');
```
#### 动态添加
动态添加应用中间件
```
Middleware::add('auth',[\app\Test:class]);
//各auth中间件中添加处理动作app\Test类
```
## 控制器中间件
控制器中间件只能在控制器访问时有效,普通路由访问时无效。
#### 配置
修改配置文件 system/config/middleware.php 中的controller配置顶
```
'controller' => [
'auth'=>[\system\middleware\Auth:class]
]
```
#### 使用
在控制器的 __construct 方法或之前执行以下代码都可触发控制器中间件运行。
```
Middleware::set('auth');
```
只允许指定方法运行中间件
```
Middleware::set('auth', ['only' => ['test']]);
```
除了某个方法外其他方法执行中间件
```
Middleware::set('auth', ['except' => ['test']]);
```
**示例**
```
namespace app\home\controller;
//初始控制器
class Index{
public function __construct(){
//中间件只在test方法中执行
Middleware::set('auth', array('only' => array('test')));
}
public function index(){
echo '后盾视频';
}
public function test(){
echo '后盾网';
}
}
```
- 文档已经迁移到后盾人
- 介绍
- 框架特性
- 开发规范
- 许可协议
- 作者向军
- 安装框架
- 更新框架
- 基础
- 入口文件
- 应用配置
- 优雅链接
- 目录结构
- 系统常量
- 自动加载
- 应用密钥
- 系统函数
- CSRF保护
- 依赖注入
- 跨域访问
- 配置
- 配置文件
- 基本功能
- 扩展配置
- c 函数
- 控制器
- 定义声明
- 基本使用
- 相关函数
- 响应消息
- 路由
- 基础知识
- 基础路由
- 路由参数
- 参数检测
- 依赖注入
- 控制器
- 分组路由
- RESTful
- 别名路由
- 数据
- 配置相关
- 核心操作
- 查询构造器
- 日志记录
- 分页处理
- 事务处理
- 函数相关
- 数据库
- 数据迁移
- 数据填充
- 模型
- 定义模型
- 模型动作
- 模型验证
- 自动完成
- 自动过滤
- 字段保护
- 数据填充
- 多表关联
- 分页处理
- 仓库
- 数据仓库
- 查询规则
- 视图
- 基础知识
- 模板配置
- 模板文件
- 分配数据
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 视图函数
- widget
- vue组件
- 中间件
- 中间件
- 缓存
- 基本操作
- 文件缓存
- 数据表缓存
- 服务
- 服务容器
- 定制服务
- 相关函数
- 请求
- 基本使用
- 请求扩展
- 测试
- 基础知识
- 基本使用
- HTTP测试
- 调试
- 调试模式
- 日志管理
- 组件
- 多语言
- 响应处理
- Cookie
- Session
- 验证码
- XML
- 自动验证
- 文件处理
- 压缩解压
- RBAC
- 数组增强
- 分页管理
- 图像处理
- 生成静态
- 加密解密
- 字符串
- 数据集合
- 工具服务
- 目录操作
- 邮件发送
- CURL
- QQ登录
- 数据备份
- 购物车
- 日志处理
- 命令组件
- 二维码
- 后盾云
- 日期处理
- 阿里
- 支付宝
- 阿里云直播
- 阿里云短信
- 阿里云邮件
- 阿里云OSS
- SOCKET
- 启动与关闭
- 前端
- 微信