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 相关文章推荐
PHP5 面向对象程序设计
Feb 13 PHP
php adodb分页实现代码
Mar 19 PHP
PHP的SQL注入过程分析
Jan 06 PHP
php权重计算方法代码分享
Jan 09 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
yii实现创建验证码实例解析
Jul 31 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 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
CI框架中zip类应用示例
2014/06/17 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
Javascript的this用法
2017/01/16 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
高中生学习的自我评价
2013/12/14 职场文书
团队经理竞聘书
2014/03/31 职场文书
招股说明书范本
2014/05/06 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
余世维讲座观后感
2015/06/11 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书