# 中間件
中間件可以在執行過程中自動運行的部件,中間件主要對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
- 啟動與關閉
- 前端
- 微信