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 相关文章推荐
分页显示Oracle数据库记录的类之一
Oct 09 PHP
php4的彩蛋
Oct 09 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
php中用unset销毁变量并释放内存
May 10 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
Python常见的pandas用法demo示例
2019/03/16 Python
pandas 时间格式转换的实现
2019/07/06 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
如何利用find命令查找文件
2016/11/18 面试题
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
观看《永远的雷锋》心得体会
2014/03/12 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
超市商业计划书
2014/05/04 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书