一、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'; } }
上一篇: 《建站管家》二次开发文档