laravel中间件Middleware原理解析及实例

laravel中间件Middleware原理解析及实例

一、总结

一句话总结:

二、laravel中间件Middleware原理解析

1、身份中间件 实例

legend3/app/Http/Middleware/Home/User.php

这是写的中间件的代码,逻辑就是判断用户是否登录,没登录就退出

1 php
 2
 3 namespace App\Http\Middleware\Home;
 4
 5 use Closure;
 6 use Auth;
 7
 8 class User
 9 {
10     /**
11      * Handle an incoming request.

12      *
13      * @param  \Illuminate\Http\Request  $request
14      * @param  \Closure  $next
15      * @return mixed
16      */
17     public function handle($request, Closure $next)
18     {
19         //前端的登录中间件
20         //作用是用Auth::guard('user')->check()来验证用户登录,
21         //如果登录成功就进行下一步
22         //如果没有登录成功就返回到登录页
23         if(!Auth::guard('user')->check()){
24             return redirect('/login');
25         }
26         return $next($request);
27     }
28 }

legend3/app/Http/Kernel.php

这里是注册中间件,相当于给中间件取别名,使用的时候可以直接通过别名调用

1     protected $routeMiddleware = [
 2         //fry
 3         //后端的登录中间件注册
 4         'admin.auth'=>Middleware\Admin\Admin::class,
 5         //前端的登录中间件注册
 6         'home.auth'=>Middleware\Home\User::class,
 7
 8         //
 9
10         'auth' => \App\Http\Middleware\Authenticate::class,
11         'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
12         'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
13         'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
14         'can' => \Illuminate\Auth\Middleware\Authorize::class,
15         'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
16         'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
17         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
18         'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
19     ];

在配置文件auth中注册guard

如果使用Auth::guard(‘user’)->check()
中的guard,就需要注册guard

如果只是作为普通中间件使用,不使用guard,就不需要

例如$this->middleware(‘home.auth’)->except([‘index’,’get_video_comment’]);

laravel中间件Middleware原理解析及实例

使用

在各个控制器中

class VideoController extends Controller
{
    public function __construct()
    {
        //排除'index'方法,进行中间件的验证
        $this->middleware('home.auth')->except(['index','get_video_comment']);
//        $this->middleware('home.auth')->except(['get_video_comment']);
    }
    省略若干代码...

}

如果没有登录,就会被被中间件拦截,跳转到登录页面

2、pjax中间件 实例

注册

laravel中间件Middleware原理解析及实例

中间件代码及位置

laravel中间件Middleware原理解析及实例

pjax中间件代码中的逻辑也非常简单,如果不是pjax请求或者是重定向,就不处理这个请求

否则就处理这个请求

laravel中间件Middleware原理解析及实例

Original: https://www.cnblogs.com/Renyi-Fan/p/15338719.html
Author: 范仁义
Title: laravel中间件Middleware原理解析及实例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546276/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 下载ts文件

    迅雷批量下载ts:https://jingyan.baidu.com/article/9989c746653967b749ecfe2f.html 如何获取ts文件的下载地址,请看上…

    技术杂谈 2023年5月31日
    0109
  • Kubernetes 存储卷详解

    转载自:https://mp.weixin.qq.com/s/Ywx3ju6FP0IShOgI757XYA Volumes 默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中…

    技术杂谈 2023年5月30日
    089
  • 【SSM框架】Spring笔记 – 事务详解

    1、Spring的事务管理: 事务原本是数据库中的概念,在实际项目的开发中,进行事务的处理一般是在业务逻辑层, 即 Service 层。这样做是为了能够使用事务的特性来管理关联操作…

    技术杂谈 2023年7月10日
    081
  • 袭击Mercurial SCM(HG)

    这个叫水银的源代码管理工具尽管默默无闻,但还是得到了非常多团队的使用。 为了迎合某些团队的须要,我们也要用它来管理我们的代码。 今天的任务是先袭击学习。磨刀不误砍柴工。 对工具的掌…

    技术杂谈 2023年5月31日
    092
  • Golang实现set

    Golang语言本身未实现set,但是实现了map golang的map是一种无序的键值对的集合,其中键是唯一的 而set是键的不重复的集合,因此可以用map来实现set 由于ma…

    技术杂谈 2023年6月21日
    065
  • log4j配置输出到多个日志文件

    通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中。那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的。这里以prope…

    技术杂谈 2023年5月31日
    096
  • Go学习第二天:查看变量的类型

    方法一: %T 格式化输出%T。详情见这个例子: import "fmt" func main(){ var a = 1 fmt.Printf( "a…

    技术杂谈 2023年7月24日
    077
  • WIN7 + IIS7 Service Unavailable HTTP Error 503. The service is unavailable.

    在win7上开启IIS功能,进行网站发布。 但是开启IIS之后,打开默认网站都打不开,显示 Service Unavailable HTTP Error 503. The serv…

    技术杂谈 2023年5月31日
    0112
  • skia 图形矩阵转换

    SkiaSharp 中的矩阵转换 下载示例 利用多样的转换矩阵深入了解 SkiaSharp 转换 应用于该对象的所有转换 SKCanvas 都在结构的单个实例中合并 SKMatri…

    技术杂谈 2023年5月31日
    0112
  • ArcGIS Pro SDK修改注记文本为下面特殊的

    来自:https://community.esri.com/t5/arcgis-pro-sdk-questions/about-text-annotation-format/m-p…

    技术杂谈 2023年5月30日
    0104
  • 数据传输POST心法分享,做前端的你还解决不了这个bug?

    背景 随时随地给大家提供技术支持的葡萄又来了。这次的事情是这样的,提供demo属于是常规操作,但是前两天客户突然反馈压缩传输模块抛出异常,具体情况是压缩内容传输到服务端后无法解压。…

    技术杂谈 2023年5月31日
    0111
  • Adroid动态加载Apk-插件化技术框架(动态代理方案)

    Android动态加载Apk-插件化技术(动态代理方案) 一.概述 为什么要使用插件化?在开发中,一个项目只会越做越大。初始版本可能是单一功能,后续可能加上各种风马牛不相及的功能。…

    技术杂谈 2023年5月31日
    096
  • 后端编写Swagger接口管理文档

    在后端开发当中,编写好多个接口后需要通过注解编写相应的接口文档提供给前端调用接口实现前后端分离。 Swagger接口管理文档 访问接口文档的网页:http://localhost:…

    技术杂谈 2023年7月11日
    058
  • React算法复杂度优化?

    react树对比是按照层级去对比的, 他会给树编号0,1,2,3,4…. 然后相同的编号进行比较。所以复杂度是n,这个好理解。 关键是传统diff的复杂度是怎么算的?传…

    技术杂谈 2023年5月31日
    093
  • 其他

    1、【剑指Offer学习】【面试题01:实现赋值运算符函数】 2、【剑指Offer学习】【面试题02:实现Singleton 模式——七种实现方式】 5、【剑指Offer学习】【面…

    技术杂谈 2023年6月21日
    090
  • 70.刺

    dsfsd posted @2022-09-28 08:47 随遇而安== 阅读(7 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    技术杂谈 2023年6月21日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球