laravel框架中间件简单使用方法示例


Posted in PHP onJanuary 25, 2020

本文实例讲述了laravel框架中间件简单使用方法。分享给大家供大家参考,具体如下:

laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作。

当然,除了认证之外,中间件还可以被用来处理更多其它任务。比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域);日志中间件可以记录所有进入站点的请求。

Laravel框架自带了一些中间件,包括认证、CSRF 保护中间件等等。所有的中间件都位于 app/Http/Middleware目录。

中间是请求前还是请求后执行取决于中间件本身,以下中间件会在请求处理前执行一些任务

<?php
namespace App\Http\Middleware;
use Closure;
class TestMiddle
{
  public function handle($request, Closure $next)
  {
    // 执行动作
    if(!$request->session()->has('huser')){
      return redirect("login/index");
    }
    return $next($request);
  }
}

而下面这个中间件则会在请求处理后执行其任务:

<?php
namespace App\Http\Middleware;
use Closure;
class TestMiddle
{
  public function handle($request, Closure $next)
  {
    $response = $next($request);
    // 执行动作
    if(!$request->session()->has('huser')){
      return redirect("login/index");
    }
    return $response;
  }
}

中间件可以自己在编辑器里面新建对应类生成,也可用命令生成

php artisan make:middleware TestMiddle

此时,laravel的app\Http\Middleware\目录就会多一个TestMiddle.php的中间件文件

此时中间件还不能直接使用,必须把它注册到我们的laravel中,如下

只需在 app/Http/Kernel.php 类(3个属性,对应里面加入,我有时用路由的)

'TestMiddle' => \App\Http\Middleware\TestMiddle::class,

分配中间件到路由,下面介绍三种方式

Route::get('/',function(){
  return redirect('home/index');
})->middleware('TestMiddle');
Route::group(['middleware' => ['TestMiddle']], function() {
  Route::controller("db","DataBaseController");
});
Route::controller("home","HomeController",['middleware'=>'TestMiddle']);

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 和 MySQL 基础教程(三)
Oct 09 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
PHP通用检测函数集合
Feb 08 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
laravel学习教程之关联模型
Jul 30 PHP
php取出数组单个值的方法
Mar 12 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 #PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 #PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 #PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 #PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 #PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 #PHP
php的RSA加密解密算法原理与用法分析
Jan 23 #PHP
You might like
解析数组非数字键名引号的必要性
2013/08/09 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHP在线书签系统分享
2016/01/04 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python抽象基类用法实例分析
2015/06/04 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
Python 中@property的用法详解
2020/01/15 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
酒店副总岗位职责
2013/12/24 职场文书
好矿嫂事迹材料
2014/01/21 职场文书
校长先进事迹材料
2014/02/01 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers