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 相关文章推荐
我的论坛源代码(四)
Oct 09 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
php join函数应用
May 04 PHP
php防注入及开发安全详细解析
Aug 09 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php中explode的负数limit用法分析
Feb 27 PHP
php导入模块文件分享
Mar 17 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
laravel 创建命令行命令的图文教程
Oct 23 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
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
Javascript模块模式分析
2008/05/16 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
理解javascript中的闭包
2017/01/11 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
python发送告警邮件脚本
2018/09/17 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python实现贪吃蛇双人大战
2020/04/18 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
运动会跳远加油稿
2014/02/20 职场文书
施工单位安全责任书
2014/07/24 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
个人道歉信大全
2019/04/11 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技