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


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

    一、总结

    一句话总结:

    二、laravel中间件Middleware原理解析

    1、身份中间件 实例

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

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

     1 <?php
     2 
     3 namespace AppHttpMiddlewareHome;
     4 
     5 use Closure;
     6 use Auth;
     7 
     8 class User
     9 {
    10     /**
    11      * Handle an incoming request.
    12      *
    13      * @param  IlluminateHttpRequest  $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'=>MiddlewareAdminAdmin::class,
     5         //前端的登录中间件注册
     6         'home.auth'=>MiddlewareHomeUser::class,
     7 
     8         //
     9 
    10         'auth' => AppHttpMiddlewareAuthenticate::class,
    11         'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
    12         'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
    13         'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
    14         'can' => IlluminateAuthMiddlewareAuthorize::class,
    15         'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
    16         'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
    17         'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
    18         'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
    19     ];

    在配置文件auth中注册guard

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

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

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

    使用

    在各个控制器中

    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中间件 实例

    注册

    中间件代码及位置

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

    否则就处理这个请求

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    中国MOOC_零基础学Java语言_第1周 计算_第1周编程题_1温度转换
    郝斌_GUI
    郝斌_生产消费
    WCF技术剖析(卷1)WCF全面解析文摘
    构建搞性能可扩展asp.net网站文摘
    net 程序员面试宝典
    【工具推荐】ELMAH——可插拔错误日志工具(转)
    各大主流.Net的IOC框架性能测试比较(转)
    2013年总结
    GCT英语口语复试中的常见问题总汇
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/15338719.html
Copyright © 2020-2023  润新知