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 文件上传源码分析(RFC1867)
Oct 30 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 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
第五节 克隆 [5]
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
深入理解Python装饰器
2016/07/27 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python调用百度API实现人脸识别
2020/11/17 Python
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
MYSQL基础面试题
2012/05/13 面试题
人事专员的职责
2014/02/26 职场文书
婚前协议书怎么写
2014/04/15 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
小班下学期个人总结
2015/02/12 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016年教代会开幕词
2016/03/04 职场文书
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python