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

thinkphp中间件

定义中间

可以通过命令行指令快速生成中间件

php think make:middleware Check

这个指令会 app/middleware目录下面生成一个Check中间件。

<?phpnamespace app\middleware;class Check
{public function handle($request, \Closure $next){if ($request->param('name') == 'think') {return redirect('index/think');}return $next($request);}
}

middleware:

注册一个中间件:

如果没有返回return $next($request),那它就没有办法往下执行。所以就当个固定格式就可以了

前/后置中间件

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();}

局部中间件

路由中间件

1. 创建一个给路由使用的中间件,判断路由的ID值实现相应的验证

class Auth{public function handle($request, \Closure $next){if ($request->param('id') == 10) {echo '是管理员!';}return $next($request);}}

1. 路由方法提供了一个middleware()方法,让指定的路由采用指定的中间件;

Route::rule('ar/:id', 'Address/read')
->middleware(\app\middleware\Auth::class);
->middleware([Auth::class, Check::class]); //支持多个中间件,这里use了

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

相关文章:

  • 协同过滤推荐算法
  • 动态规划-P1216 [IOI 1994] 数字三角形 Number Triangles
  • RAG实战指南 Day 4:LlamaIndex框架实战指南
  • AutoMedPrompt的技术,自动优化提示词
  • 基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
  • 【学习线路】机器学习线路概述与内容关键点说明
  • 解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
  • STC8G 8051内核单片机开发(GPIO)
  • “Payload document size is larger than maximum of 16793600.“问题解决(MongoDB)
  • C++ 网络编程(14) asio多线程模型IOThreadPool
  • PyTorch 安装使用教程
  • EXCEL小妙招——判断A列和B列是否相等
  • AI时代SEO关键词策略
  • cv610将音频chn0配置为g711a,chn1配置为 aac编码,记录
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的跨语言信息检索与知识融合(331)
  • Docker:容器化技术的基石与实践指南
  • 机器学习在智能能源管理中的应用:需求响应与可再生能源整合
  • ECharts 安装使用教程
  • 计算机视觉的新浪潮:扩散模型(Diffusion Models)技术剖析与应用前景
  • 第8章网络协议-NAT
  • 多种方法实现golang中实现对http的响应内容生成图片
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ButtonRippleEffect(按钮涟漪效果)
  • springboot切面编程
  • Softhub软件下载站实战开发(十):实现图片视频上传下载接口
  • 全角半角空格在网页中占位符和编码emsp;ensp;
  • CentOS 6操作系统安装
  • 毫米波雷达 – 深度学习
  • ubuntu 22.04 LTS 安装preempt-rt
  • C++2d我的世界V1.4
  • 模型预测专题:强鲁棒性DPCC