Laravel文档梳理8、中间件
前言:Laravel文档梳理,仅作为记录后看,无关其他。
1、什么是中间件?
见字识意,放在中间部分,用来处理某种业务的组件。http中间件,提供了一个方便的机制过滤进入应用程序的http请求,只有经过了中间件的过滤,程序才会继续往下运行。
2、常见的中间件功能
Auth中间件,验证用户的身份
Cors中间件,负责替所有即将离开程序的响应,加入适当的标头
日志中间件,负责记录所有传入应用程序的请求。
3、laravel框架的中间件放在哪里?
App/Http/Middleware
4、如何创建出一个中间件?
php artisan make:middleware OldMiddleware
Ps:可手动创建,也可以通过artisan命令来生成。
此命令将会在 app/Http/Middleware 目录内设定一个名称为 OldMiddleware 的类
5、OldMiddleware中间件实例
<?php
namespace App\Http\Middleware;
use Closure;
class OldMiddleware
{
/**
* 运行请求过滤器。
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->input('age') <= 200) {
return redirect('home');
}
return $next($request);
}
}
Age小于200,中间件将返回http请求重定位到用户端,否则,进步传入应用程序。
6、如果你希望http请求,都经过你的中间件,那该怎么处理?
将中间件加入到app/Http/kernel.php文件的$middleware属性中。
7、如果你想单独给某个路由指定中间件,如何处理?
a、在app/Http/Kernel.php文件的$routeMiddleware属性中加一组自定义的该中间件的键值,如下:
// 在 App\Http\Kernel 类内...
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
b、在路由文件中,针对路由使用添加好的中间件的键名,即可。
中间件,一旦在kernel文件中指定,就可以在路由选项中,使用middleware键值指定:
Route::get('admin/profile', ['middleware' => 'auth', function () {
//
}]);
c、也可以给一个路由使用多个中间件,如下:
Route::get('/', ['middleware' => ['first', 'second'], function () {
//
}]);
d、除了c这种方法,也可以链式调用middleware方法
Route::get('/', function () {
//
}])->middleware(['first', 'second']);
8、中间件参数
运行某操作前,要验证当前用户是否有该【角色】,你可以创建一个角色中间件,接收角色名称,作为额外传参:
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware
{
/**
* 运行请求过滤
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string $role
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
// 如果用户没有特定「角色」的话
}
return $next($request);
}
}
在路由中,可使用冒号:来间隔中间件名称与指派参数,多个参数可以使用逗号分隔
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) {
//
}]);
9、Terminable中间件
这个中间件,是为了满足http请求发送到浏览器之后,才处理session存储操作的。
<?php
namespace Illuminate\Session\Middleware;
use Closure;
class StartSession
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
// 保存 session 数据...
}
}
一旦定义了中间件,你就需要把它加到kernel文件的全局中间件清单列表中。
当你调用terminate()方法时,laravel会从服务器容器解析出一个全新的中间件实例。
如果你希望handle() terminate()方法被调用时使用一致的中间件,那么,就需要使用容器的singleton方法注册中间件。
Laravel文档梳理8、中间件相关推荐
- Laravel文档梳理6、响应
前言:Laravel文档梳理,仅作为记录后看,无关其他. 1.laravel框架最基本的响应 Route::get('/', function () { return 'Hello World ...
- B2G OS官网文档梳理
前提: B2G OS官方文档地址:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS 在网上查阅关于FireFox OS相关的文章.博客,发 ...
- 服务器文档梳理,工作内容:配置文件服务器并整理文档
<工作内容:配置文件服务器并整理文档>由会员分享,可在线阅读,更多相关<工作内容:配置文件服务器并整理文档(8页珍藏版)>请在人人文库网上搜索. 1.工作内容:配置文件服务器, ...
- 数据产品经理踩坑之——数据无法上卷进行汇总需求文档梳理
背景:前日在出数据需求文档时,错将不可上卷汇总的需求提成了最细粒度化的需求,导致数据无法上卷,因此无法展现的事情,现将此情况进行review,以帮助自己的成长. review:有些数据是无法用最细粒度 ...
- 服务器文档梳理,服务器节点与集群
服务器节点与集群 内容精选 换一换 节点是容器集群组成的基本元素.节点取决于业务,既可以是虚拟机,也可以是物理机.每个节点都包含运行Pod所需要的基本组件,包括Kubelet.Kube-proxy . ...
- 不写技术文档是个什么梗
写文档在工作中很常见了,正规的公司都有文档,除非是很简单的东西. 文档用来给新人或不熟悉的人的看,出需求也要文档.只凭笔在本子上划几下不能让人懂. 凡是稍微复杂的东西一定用文档梳理流程,有的还有流程图 ...
- 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制...
Swashbuckle.AspNetCore3.0 介绍 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具.直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探 ...
- MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结
MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...
- 产品需求文档写作方法(一)写前准备+梳理需求
一.写前准备 1.1我们先明白几个名词: MRD 市场需求文档,(英文全称Market Requirement Document,MRD).该文档在产品项目过程中属于"过程性"文档 ...
- [ Laravel 5.5 文档 ] 快速入门 —— 使用 Laragon 在 Windows 中搭建 Laravel 开发环境
简介 之前学院君陆续写了三篇介绍 Laravel 开发环境的教程:Homestead.Valet 和 LaraDock,我都是在 Mac 系统中安装使用的,相当流畅,没有任何梗,但是对于那些使用 Wi ...
最新文章
- pandas中的基本功能
- ios 圆形旋转菜单_iOS高级动画:圆形树展开收起动画
- Java 计算学生的平均成绩
- 关中断解决任务间资源共享问题
- rlm sql mysql.so_UBUUTU7.10上安装配置freeradius+mysql+rp-pppoe手记
- 考公专业科目计算机,2017国考中国证监会专业科目考试大纲(计算机类)
- 5-数据结构-数组的学习
- java.sql.SQLException: ORA-28001: 口令已经失效
- ARM公司推出AI与机器学习用新型微处理器
- Linux 下子线程 exit code 在主线程中的使用
- 拉格朗日方程的三种推导方法之基于达朗贝尔原理推导
- 短视频App开发方案IOS架构
- 如何用木板做桥_用木板做桥 工具跟做家具的一样 大小跟办公桌差不多大 能承重 参加比赛 主要是承重 给个设计方案...
- 货币金融学之基本概念
- 手机 app GDPR 合规的9个关键步骤
- Python爬虫及其它函数知识读记及简单用法,持续更新中...
- 两个显示屏之间鼠标移动方向调整
- 前端面试+学习笔记(HTML+CSS+JavaScript+ES6+Vue+NodeJs)
- Visual Studio 2022有趣又强大的智能辅助编码
- 强化学习经典算法笔记(十九):无监督策略学习算法Diversity Is All You Need
热门文章
- 1一9数字行书写法_阿拉伯数字怎么写好看(数字1到10的漂亮手写体)
- Android网络框架情景分析之NetworkManagementService和Netd交互深入分析一
- 学中式烹调10天笔记(正式)
- ExtJS 可视化开发工具大全
- 云痕大数据 家长登录_云痕大数据查成绩app
- [leetcode题解] 第995题Minimum Number of K Consecutive Bit Flips
- 微信平台商户开通证书相关问题盘点
- 小波 奇异点 matlab,用Matlab小波变换检测奇异点.doc
- 多测师肖sir_金牌高级讲师_po设计(000)
- 如何解决360的导航一直绑定为首页(亲测有效)