1、中间件介绍
中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身。
下面是一个前置行为的中间件示例
<?php
namespace app\middleware;
class Before
{
public function handle($request, \Closure $next)
{
// 添加中间件执行代码
return $next($request);
}
}
2、接下来介绍利用前置中间件对后台登录进行拦截的做法,以下做法是在多应用模式下的(如果不了解多应用模式,可以查看我往期文章):
\app\admin下,新建middleware文件夹,并且在middleware下新建Auth.php文件,添加代码如下:
<?php
declare (strict_types = 1);
namespace app\admin\middleware;
use think\Response;
/**
* 后台登录跳转判断,未登录跳转到登录页面
* Class Auth
* @package app\admin\middleware
*/
class Auth
{
public function handle($request, \Closure $next)
{
// 前置中间件
if (empty(session('adminUser')) && !preg_match('/login/', $request->pathinfo())) {
return redirect((string)url('login/index'));
}
return $next($request);
}
/**
* 中间件结束调度
* @param Response $response
*/
public function end(Response $response)
{
}
}
\app\admin下,新建middleware.php,在文件中引入刚刚新建的中间件,添加代码如下:
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// \think\middleware\CheckRequestCache::class,
// 多语言加载
// \think\middleware\LoadLangPack::class,
// Session初始化
\think\middleware\SessionInit::class,
// 后台登录跳转判断
\app\admin\middleware\Auth::class,
];
接下来就是对中间件的测试,在未登录状态下,访问后台的需要登录的内容页面,则会跳转到登录页面,只有登录情况下才能正常访问,这就是前置中间件对登录拦截的具体使用。
加我微信公众号:,定期更新文章,一起学习哦~
网友评论