[TOC]
## Interceptor:前置拦截器
可以配置多组拦截器对访问进行拦截,访问在真正到达控制器前会按顺序经过 Interceptor,可以做一些权限,用户身份识别等代码
配置
~~~
'interceptors'=>[
\cloud\CloudInterceptor::class,
\cloud\mag\MagInterceptor::class,
\cloud\security\SecurityInterceptor::class
],
'interceptors_except'=>['/log'] //需要排除的路径前缀
~~~
拦截器需要实现Interceptor接口
如
~~~
class SecurityInterceptor implements Interceptor{
/**
* @var CloudApi
*/
private $api;
public function _initialize(CloudApi $api) {
$this -> api = $api;
}
public function handler(Request $request, Response $response) {
return false;
}
}
~~~
### 返回结果
如果拦截器可以处理请求,不需要继续向下传递,可以直接返回结果,返回结果的方法和控制器的返回结果的方法相同
~~~
如
return ['success'=>true];
return body('文本内容');
~~~
如果拦截器需要继续向下传递
可以不写 return 或 return false;
## AfterInterceptor:后置拦截器
如果你还需要在控制器处理完成后添加统一逻辑可以实现该接口
源码中 RequestCacheInterceptor就是同时实现了Interceptor和AfterInterceptor两个接口
## 通过代码添加拦截器
$application->addInterceptor(类名,优先级)
~~~
public function appInit(AutoFindHandlerMapping $autoMapping, Router $router) {
/* @var $application Application */
$application = Ioc::get(Application::class);
$application->addInterceptor(SecurityInterceptor::class,99);
}
~~~
## 拦截器优先级
1. 配置文件中配置的优先级都是 100,按配置循序执行
2. 你可以通过代码加入拦截器并设置优先级
3. 最后拦截器的执行顺序是按优先级排序的 越小的越先执行
- 序言
- 开始
- 安装 RapPhp
- 应用目录
- 配置文件
- 入口类
- MVC架构
- 控制器基础
- 前置方法
- 拦截器
- 动态路由
- Request和Response
- Cookie和Session
- 模板引擎
- 请求缓存
- 流程图
- 数据库
- 基础使用
- 查询语法
- 查询操作
- where
- order
- limit
- lock
- fields
- join
- distinct
- having
- group
- force
- 查询方法
- 多数据源
- 数据库类型
- Record模型
- 使用Record
- 增删改
- 查找方法
- 数据类型
- 基本类型
- JSON 数据类型
- time
- date
- attach
- const
- 迭代操作
- record 更多方法
- 注入与转json
- 多级缓存
- 多数据源
- 模型生成
- 回调事件
- IOC控制反转
- Ioc基础概念
- 依赖注入
- Scope作用域
- 构造器
- 循环依赖
- AOP面向切面
- AOP使用
- 切面
- AopBuild
- 生成 aop 文件
- 事件勾子
- 执行循序
- Swoole
- Http服务器
- 用户进程
- Context上下文(重要)
- 协程
- 特色功能
- 限流器
- 连接池
- 数据库连接池
- Redis 连接池
- 通用连接池
- Rpc 远程调用
- Rpc服务提供方
- Rpc客户端
- 熔断器与服务降级
- Redis 分布式锁
- 其他功能
- 缓存
- redis
- 文件存储
- 存储简介
- 本地存储
- OSS存储
- 配置
- 日志
- 验证器
- FileUtil
- 数组Util
- Http工具
- 多语言
- 命令行
- 使用命令行
- 生成模型文件
- AOP动态文件生成
- swoole_http服务器
- 自定义命令行
- 异常与调试
- 异常抛出
- 异常处理
- 部署
- URL重写
- DOCKER 镜像(重要)
- 附录
- 回调事件
- 开发规范
- Swoole开发注意点
- 热点行更新排队机制
