zoukankan      html  css  js  c++  java
  • laravel自定义中间件实例

    laravel自定义中间件实例

    一、总结

    一句话总结:

    二、laravel自定义中间件实例

    1、中间件位置和代码

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

    <?php
    
    namespace AppHttpMiddlewareHome;
    
    use AppModelsBaHomeAaUserAbUserSettingGetGetUserSetting;
    use Closure;
    use Auth;
    
    //上传功能中间件
    class UploadLessonMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            //前端的上传功能中间件
            //用来判断用户是否有上传课程、上传视频、上传博客的权限
            //如果登录成功就进行下一步
            //如果没有登录成功就返回到登录页
            if(!Auth::guard('user')->check()){
                return redirect('/login');
            }else{
                //如果登录了
                $u_id=Auth::guard('user')->user()->id;
                $u_id=intval($u_id);
                $user_setting=GetUserSetting::byUID($u_id);
                //有发布课程的权限
                if($user_setting['us_can_publish_lesson']){
                    //进行下一步操作
                    return $next($request);
                }else{
                    return redirect('/no_upload_lesson_permission');
                }
            }
    
        }
    }
     

    2、注册中间件

    legend3/app/Http/Kernel.php

    protected $routeMiddleware = [
        //fry
        //后端的登录中间件注册
        'admin.auth'=>MiddlewareAdminAdmin::class,
        //前端的登录中间件注册
        'home.auth'=>MiddlewareHomeUser::class,
        //发布课程权限中间件
        'upload_lesson'=>MiddlewareHomeUploadLessonMiddleware::class,
    
        省略若干无关代码...........
    ]

    3、使用中间件

    class CreateLessonController extends CommonController
    {
    
        public function __construct()
        {
            //排除'index'方法,进行中间件的验证
            $this->middleware('upload_lesson')->except(['no_upload_lesson_permission']);
        }
        省略若干无关代码........... 
    }

    可以写个方法来显示没通过权限验证的消息

    //没有上传课程权限的中间件返回显示信息
    public function no_upload_lesson_permission(){
        $validate_message='你没有权限发布课程、章节、视频!!';
        $error_data=['validate_message'];
        return view('home.ya_common.validate_return_page.validate_return_page',compact($error_data));
    }
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    Sonar安装与使用说明
    oracle物化视图使用+hibernate
    CAS实现SSO单点登录原理(转)
    冒泡事件通用解法
    百度网盘搜索
    (转)mvn clean install 与 mvn install 的区别(为啥用clean)
    初识Channel
    Java 重入锁 ReentrantLock
    多线程之Future模式
    一天一个类--NIO 之Buffer
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/15339198.html
Copyright © 2011-2022 走看看