thinkphp6应用中间件及全局中间件的用法示例

南国老符 南国老符 最后更新于:2022-10-22 浏览:1266

一、thinkphp6全局中间件的用法示例:
1、创建全局中间件文件:app\middleware\CheckLogin.php

<?php
namespace app\middleware;

class CheckLogin{
    public function handle($request, \Closure $next) {
    	$module = app('http')->getName();
        /*判断用户是否登陆*/
        if(in_array($module, array('admin')) and empty(session('userid'))){
	    return '请登录';
	}
        
        return $next($request);
    }
}


2、启用全局中间文件:app\middleware.php

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // Session初始化
    \think\middleware\SessionInit::class,
    // 启用全局中间件
    \app\middleware\CheckLogin::class
];


3、创建公共控制器:app\cn\controller\Base.php

<?php
namespace app\cn\controller;
use app\BaseController;

class Base extends BaseController{
    protected $middleware = [
        'auth' => ['only' => ['user/index'] ], // 只有在user/index控制器方法下启用中间件
    ];    
}


4、创建会员中心和登录页面:app\cn\controller\User.php

<?php
namespace app\cn\controller;

class User extends Base{    
    public function index(){
        return '会员中心';
    }

    public function login(){
        return '登录页面';
    }
}



二、thinkphp6应用中间件的用法示例:
1、创建应用中间件文件:app\cn\middleware\CheckLogin.php

<?php
namespace app\cn\middleware;

class CheckLogin{
    public function handle($request, \Closure $next) {
    	if(empty(session('userid'))){
    	    return '请登录';
    	}
        
        return $next($request);
    }
}


2、创建路由文件:app\cn\route\route.php

<?php
use think\facade\Route;

Route::group(function () {
        Route::rule('user/index','user/index');//只有该控制器和方法下启用中间件
})->middleware(\app\cn\middleware\CheckLogin::class);


3、创建会员中心页面和登录页面文件:app\cn\controller\User.php

<?php
namespace app\cn\controller;

class User{
    public function index(){
    	return '会员中心';
    }

    public function login(){
    	return '登录页面';
    }
}


我的做法:
一、新建全局中间件:app\middleware\All.php

<?php
namespace app\middleware;

class All{
    public function handle($request, \Closure $next) {    	
    	if(empty(session('userid'))){
    	    return redirect(url('user/login'));
    	}
        
        return $next($request);
    }
}


二、应用的路由启用中间件:app\cn\route\route.php

<?php
// 路由启用中间件
Route::group(function(){
	Route::rule('user/index','user/index');
})->middleware(\app\middleware\All::class);


三、新建控制器文件:app\cn\controller\User.php

<?php
namespace app\cn\controller;

class User{
    /*会员中心*/
    public function index(){
    	return 'index';
    }

    /*登录页面*/
    public function login(){
    	return 'login';
    }
}



点赞 (0)

收藏 (0)
转载请务必注明: 来源:《建站管家》https://www.df81.com/news/465.html

本站部分信息来源网络,如有侵权,请联系QQ:1062129401删除。

上一篇: 网站搜索有问题

下一篇: 通过FTP获取源码内的中文(注释、文件名)出现乱码。

请先登录后,再发表评论 ~ ~
发表评论
发表帖子
广告位招租( ¥5 / 天 )
点击咨询
最新帖子

南国老符
2025-05-26 16:54
南国老符
2024-09-29 10:29
南国老符
2023-12-15 21:41
广告位招租( ¥5 / 天 )
点击咨询
最近评论

Y
yuanis90
回复:在后台->全局管理->网站设置->网站html代码,把你申请的分享代码贴到这里保存即可。以后发问题,请贴出具体版本号
南国老符
回复:发表帖子发不了  乱码
南国老符
回复:第一位参与的老总,是做洗衣店saas系统的,需要的请联系
9
9252
回复:新版已经修复了的,升级忘记覆盖了,你重新下载即可。
U
user1304
回复:PHP开启fileinfo扩展即可
U
user1379
回复:版本号多少?
购买VIP
购买授权
余额充值
发表帖子
客服微信