laravel5.5中间件
目录
- 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中间件相关推荐
- 解析多层list_基于laravel5.2进行中间件源码的解析
在laravel5.2中,Http的主要作用就是过滤Http请求(php aritsan是没有中间件机制的),同时也让系统的层次(Http过滤层)更明确,使用起来也很优雅.但实现中间件的代码却很复杂, ...
- laravel5.5 middleware 多个中间件的写法
场景 . 路由定义anywhere 解决 middleware('api', 'auth')
- laravel 控制器 中间件 传递数据_Laravel5 自定义路由中间件的使用步骤,太好用,珍藏了!...
前言 Laravel5中我们处理request请求,中间会有很多环节.本文所说的中间件,位于路由和控制器之间,起到过滤和筛选请求的作用. 为什么不放到"表单验证"里呢? 因为有些请 ...
- Laravel源码解析之中间件
中间件(Middleware)在Laravel中起着过滤进入应用的HTTP请求对象(Request)和完善离开应用的HTTP响应对象(Reponse)的作用, 而且可以通过应用多个中间件来层层过滤请求 ...
- Laravel核心解读--中间件(Middleware)
中间件(Middleware)在Laravel中起着过滤进入应用的HTTP请求对象(Request)和完善离开应用的HTTP响应对象(Reponse)的作用, 而且可以通过应用多个中间件来层层过滤请求 ...
- Laravel5.5 项目开发文档,精简版,不适合新手使用。
Laravel5.5 开发规范 声明,本文档来自 laravel-china 社区,根据个人知识水平阅读记录. 原文地址:https://laravel-china.org/docs/laravel- ...
- laravel5.8整合JWT
记录一次laravel5.8开发的API接口,引入JWT的流程. laravel+JWT的整合教程在网上有很多,根据网上的教程整合期间,还是踩了很多坑. 虽然这些坑都能在网上搜索到解决办法,但网上的其 ...
- laravel5.2 银联支付
一,安装&配置(网关支付的闭包) 在composer.json中添加如下依赖: "ignited/laravel-omnipay": "2.*", &q ...
- Laravel5.5源码详解 -- Laravel-debugbar及使用elementUI-ajax的注意事项
Laravel5.5源码详解 – Laravel-debugbar 及使用elementUI - ajax的注意事项 关于laravel对中间件的处理,请参中间件考另文, Laravel5.5源码详解 ...
最新文章
- 如何判断你的数据集是否适合使用深度学习模型?如果数据量太小有什么解决办法?
- 16、React系列之 React 路由
- 微型计算机原理设计存储系统,微机原理存储器设计讨论报告
- Vue源码:抽象语法树
- 拟凸函数一阶条件的证明
- Linux - grep命令详解
- w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
- 暴雪正在等待另一项_守望先锋更新一直显示正在等待另一项安装或更新怎么办...
- 国庆必看9大区块链电影!建议收藏!
- 微信小程序:微擎开发飞鹅打印机配置
- 如何解决Win10电脑网速慢的问题?
- firefox os : firefox os vs android
- 【学习笔记】欧拉函数
- Linux查看DNS地址以及端口,nslookup命令以及更强大的dig命令
- 微信公众号(一键互粉)增粉平台的源码分享
- 共模扼流圈的工作原理与作用以及特点和应用详解
- Java 实现高并发秒杀
- 新概念1 课文和单词(2022/12/23)
- php 各种路由分析_thinkphp5路由详解
- Maya安装后运行崩溃/闪退/报错
热门文章
- CSDN Markdown编辑器编辑教程
- Python数据库使用MySQL
- 安装Microsoft Windows SDK 7.1时出现的错误(附解决办法)
- linux的strace命令(详解)
- [Redux/Mobx] 你有使用过redux-saga中间件吗?它是干什么的?
- [react] 在react中你是怎么进行状态管理的?
- 前端学习(3057):vue+element今日头条管理-回顾
- 前端学习(2890):如何短时间内实现v-for 模板编译321
- [vue] vue和微信小程序写法上有什么区别?
- [css] 用css给一个元素加边框有哪些方法?