ThinkPHP6.0 使用前置中间件处理登录拦截

2020-04-06  本文已影响0人  皮蛋馅儿

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,
];

接下来就是对中间件的测试,在未登录状态下,访问后台的需要登录的内容页面,则会跳转到登录页面,只有登录情况下才能正常访问,这就是前置中间件对登录拦截的具体使用。

加我微信公众号:\color{red}{皮蛋馅儿},定期更新文章,一起学习哦~

上一篇 下一篇

猜你喜欢

热点阅读