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

作者相关推荐

原文地址:https://www.cnblogs.com/Renyi-Fan/p/15339198.html