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

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

一、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获取源码内的中文(注释、文件名)出现乱码。

请先登录后,再发表评论 ~ ~
发表评论
评论 (0)

发表帖子
广告位招租( ¥5 / 天 )
点击咨询
最新帖子

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

U
user1379
回复:版本号多少?
U
user1379
回复:新版本修复了,下载新版本即可
U
user1379
U
user1304
回复:默认没有这个功能,你可以自行二次开发后期可能会考虑在站群版本上加入此功能及商城功能
Y
yuanis90
回复:后台->语言->全局管理->模型管理->编辑->启用关键词内链即可
Y
yuanis90
回复:后台已经启用了,但是前台产品说明的关分键词还是没有自动链接到,
购买VIP
购买授权
余额充值
发表帖子
客服微信