美文网首页
ThinkPHP6.0 使用前置中间件处理登录拦截

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

作者: 皮蛋馅儿 | 来源:发表于2020-04-06 16:19 被阅读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}{皮蛋馅儿},定期更新文章,一起学习哦~

    相关文章

      网友评论

          本文标题:ThinkPHP6.0 使用前置中间件处理登录拦截

          本文链接:https://www.haomeiwen.com/subject/nwdbphtx.html