目录

  • 1. 中间件知识

    • 1. artisan 命令
    • 2. 文件内容
    • 3. 前置中间件和后置中间件
    • 4. 使用中间件
  • 2. 控制器中间件

1. 中间件知识

1. artisan 命令

php artisan make:middleware CheckAge

2. 文件内容

<?phpnamespace App\Http\Middleware;use Closure;class CheckAge
{public function handle($request, Closure $next){if ($request->age <= 200) {return redirect('home');}//还可以进行一些其他的判定return $next($request);}}

3. 前置中间件和后置中间件

前置中间件和后置中间件区别在于执行动作在$next($request)之前还是之后

//前置中间件public function handle($request, Closure $next){// 执行动作,在$next($request)之前$response = $next($request);return $response;}
//后置中间件public function handle($request, Closure $next){$response = $next($request);// 执行动作在$next($request)之后,return之前return $response;}

4. 使用中间件

  • 全局中间件

只需在 app/Http/Kernel.php 类中的 $middleware 属性里列出这个中间件类 。

    protected $middleware = [\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,//更多。。。];
  • 特定路由中间件

只需在 app/Http/Kernel.php 类中的 $routeMiddleware 属性里添加,然后在路由中分配给路由

protected $routeMiddleware = ['auth' => \Illuminate\Auth\Middleware\Authenticate::class,'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,//更多。。。
];
//给路由分配中间件
Route::get('admin/profile', function () {//
})->middleware('auth');
//分配多个中间件:
Route::get('/', function () {//
})->middleware('first', 'second');
  • 中间件组

只需在 app/Http/Kernel.php 类中的 $middlewareGroups 属性里添加,然后在路由中分配给路由

protected $middlewareGroups = ['web' => [\App\Http\Middleware\EncryptCookies::class,\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,\App\Http\Middleware\VerifyCsrfToken::class,\Illuminate\Routing\Middleware\SubstituteBindings::class,],'api' => ['throttle:60,1','auth:api',],
];
//一次为路由分配多个中间件
Route::get('/', function () {//
})->middleware('web');Route::group(['middleware' => ['web']], function () {//
});

2. 控制器中间件

中间件 可以在路由文件中被分配给控制器路由:

Route::get('profile', 'UserController@show')->middleware('auth');

但是,在控制器的构造方法中指定中间件会更方便。使用控制器构造函数中的 middleware 方法,你可以很容易地将中间件分配给控制器的行为。你甚至可以约束中间件只对控制器类中的某些特定方法生效:

class UserController extends Controller
{/*** 实例化一个新的控制器实例。** @return void*/public function __construct(){$this->middleware('auth');$this->middleware('log')->only('index');$this->middleware('subscribed')->except('store');}
}

还能使用闭包来为控制器注册中间件。闭包的方便之处在于,你无需特地创建一个中间件类来为某一个特殊的控制器注册中间件:

$this->middleware(function ($request, $next) {// ...return $next($request);
});

转载于:https://www.cnblogs.com/redirect/p/8435818.html

laravel5.5中间件相关推荐

  1. 解析多层list_基于laravel5.2进行中间件源码的解析

    在laravel5.2中,Http的主要作用就是过滤Http请求(php aritsan是没有中间件机制的),同时也让系统的层次(Http过滤层)更明确,使用起来也很优雅.但实现中间件的代码却很复杂, ...

  2. laravel5.5 middleware 多个中间件的写法

    场景 . 路由定义anywhere 解决 middleware('api', 'auth')

  3. laravel 控制器 中间件 传递数据_Laravel5 自定义路由中间件的使用步骤,太好用,珍藏了!...

    前言 Laravel5中我们处理request请求,中间会有很多环节.本文所说的中间件,位于路由和控制器之间,起到过滤和筛选请求的作用. 为什么不放到"表单验证"里呢? 因为有些请 ...

  4. Laravel源码解析之中间件

    中间件(Middleware)在Laravel中起着过滤进入应用的HTTP请求对象(Request)和完善离开应用的HTTP响应对象(Reponse)的作用, 而且可以通过应用多个中间件来层层过滤请求 ...

  5. Laravel核心解读--中间件(Middleware)

    中间件(Middleware)在Laravel中起着过滤进入应用的HTTP请求对象(Request)和完善离开应用的HTTP响应对象(Reponse)的作用, 而且可以通过应用多个中间件来层层过滤请求 ...

  6. Laravel5.5 项目开发文档,精简版,不适合新手使用。

    Laravel5.5 开发规范 声明,本文档来自 laravel-china 社区,根据个人知识水平阅读记录. 原文地址:https://laravel-china.org/docs/laravel- ...

  7. laravel5.8整合JWT

    记录一次laravel5.8开发的API接口,引入JWT的流程. laravel+JWT的整合教程在网上有很多,根据网上的教程整合期间,还是踩了很多坑. 虽然这些坑都能在网上搜索到解决办法,但网上的其 ...

  8. laravel5.2 银联支付

    一,安装&配置(网关支付的闭包) 在composer.json中添加如下依赖: "ignited/laravel-omnipay": "2.*", &q ...

  9. Laravel5.5源码详解 -- Laravel-debugbar及使用elementUI-ajax的注意事项

    Laravel5.5源码详解 – Laravel-debugbar 及使用elementUI - ajax的注意事项 关于laravel对中间件的处理,请参中间件考另文, Laravel5.5源码详解 ...

最新文章

  1. 如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法?
  2. 16、React系列之 React 路由
  3. 微型计算机原理设计存储系统,微机原理存储器设计讨论报告
  4. Vue源码:抽象语法树
  5. 拟凸函数一阶条件的证明
  6. Linux - grep命令详解
  7. w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
  8. 暴雪正在等待另一项_守望先锋更新一直显示正在等待另一项安装或更新怎么办...
  9. 国庆必看9大区块链电影!建议收藏!
  10. 微信小程序:微擎开发飞鹅打印机配置
  11. 如何解决Win10电脑网速慢的问题?
  12. firefox os : firefox os vs android
  13. 【学习笔记】欧拉函数
  14. Linux查看DNS地址以及端口,nslookup命令以及更强大的dig命令
  15. 微信公众号(一键互粉)增粉平台的源码分享
  16. 共模扼流圈的工作原理与作用以及特点和应用详解
  17. Java 实现高并发秒杀
  18. 新概念1 课文和单词(2022/12/23)
  19. php 各种路由分析_thinkphp5路由详解
  20. Maya安装后运行崩溃/闪退/报错

热门文章

  1. CSDN Markdown编辑器编辑教程
  2. Python数据库使用MySQL
  3. 安装Microsoft Windows SDK 7.1时出现的错误(附解决办法)
  4. linux的strace命令(详解)
  5. [Redux/Mobx] 你有使用过redux-saga中间件吗?它是干什么的?
  6. [react] 在react中你是怎么进行状态管理的?
  7. 前端学习(3057):vue+element今日头条管理-回顾
  8. 前端学习(2890):如何短时间内实现v-for 模板编译321
  9. [vue] vue和微信小程序写法上有什么区别?
  10. [css] 用css给一个元素加边框有哪些方法?