当前位置: 首页 > news >正文

Thinkphp6.0中间件.上

本节课我们来学习一下中间件的用法,定义一下中间件。

一.定义中间件

1. 中间件的主要用于拦截和过滤 HTTP 请求,并进行相应处理;
2. 这些请求的功能可以是 URL 重定向、权限验证等等;
3. 为了进一步了解中间件的用法,我们首先定义一个基础的中间件;
4. 可以通过命令行模式,在应用目录下生成一个中间件文件和文件夹;
php think make:middleware Check
namespace app\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ($request->param('name') == 'index') {
return redirect('../');
}
return $next($request);
}
}

5. 然后将这个中间件进行注册,在应用目录下创建 middleware.php 中间件配置;
return [
app\middleware\Check::class
];

6. 中间件的入口执行方法必须是:handle()方法,第一参数请求,第二参数是闭包;
7. 业务代码判断请求的 name 如果等于 index,就拦截住,执行中间件,跳转到首页;
8. 但如果请求的 name lee,那需要继续往下执行才行,不能被拦死;
9. 那么就需要$next($request)把这个请求去调用回调函数;
10. 中间件 handle()方法规定需要返回 response 对象,才能正常使用;
11. $next($request)执行后,就是返回的 response 对象;
12. 为了测试拦截后,无法继续执行,可以 return response()助手函数测试;

二.前/后置中间件

1. $next($request)放在方法底部的方式,属于前置中间件;
2. 前置中间件就是请求阶段来进行拦截验证,比如登录判断、跳转、权限等;
3. 而后置中间件就是请求完毕之后再进行验证,比如写入日志等等;
public function handle($request, \Closure $next)
{
//中间件代码,前置
return $next($request);
}
public function handle($request, \Closure $next)
{
$response = $next($request);
//中间件代码,后置
return $response;
}

三.结束调度
1. 中间件提供了一个 end()方法,可以在中间件执行到最后时执行;
public function end(Response $response)
{
//中间件执行到最后执行
echo $response->getData();
}

http://www.lryc.cn/news/59171.html

相关文章:

  • 十进制到八进制的转换
  • 【从零开始学Skynet】基础篇(四):网络模块常用API
  • 怎么免费制作logo?logo免费设计在线生成,从此设计不求人
  • 【目标检测】目标检测遇上知识图谱:Object detection meets knowledge graphs论文解读与复现
  • IDEA重复下载SNAPSHOT包问题
  • 【Unity入门】12.MonoBehaviour事件函数
  • 1.3 Docker Compose-详细介绍
  • 数据分析:麦当劳食品营养数据探索并可视化
  • ES6标准
  • ASP一个物流商品运输系统的设计与实现
  • 肖 sir_就业课__009ui自动化讲解
  • 「线性DP」花店橱窗
  • 数组的去重方法
  • ESP32-LORA通信
  • 博客首页效果
  • 【LeetCode】剑指 Offer(29)
  • 自然语言处理(八):Lexical Semantics
  • 推荐一款 AI 脑图软件,助你神速提高知识体系搭建
  • 掌握这些“学习方法和工具”,让你事半功倍!
  • MyBatis 源码解析 面试题总结
  • 「业务架构」需求工程—需求规范(第3部分)
  • chapter-1数据管理技术的发展
  • 23.Spring练习(spring、springMVC)
  • 【数据库原理 • 七】数据库并发控制
  • 内部人员或给企业造成毁灭性损失
  • 【技巧】Word“只读方式”的设置与取消
  • 【软考备战·希赛网每日一练】2023年4月12日
  • 算法记录 | Day28 回溯算法
  • 气象历史数据和空气质量历史数据资源汇总免费
  • 【区块链】走进web3的世界-对于前端来说,web2与web3的区别