ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

thinkphp6: 使用middleware限制ip黑名单(thinkphp 6.0.9/php 8.0.14)

2021-12-30 22:36:07  阅读:224  来源: 互联网

标签:8.0 14 ip middleware com lhdpc php data


一,创建一个middleware

liuhongdi@lhdpc:/data/php/admapi$ php think make:middleware CheckIp
Middleware:app\middleware\CheckIp created successfully.

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,编写php代码:

1, middleware/CheckIp.php  
<?php
declare (strict_types = 1);
 
namespace app\middleware;
 
use app\result\Result;
 
class CheckIp
{
    //地址列表,生产环境中通常会在redis中
    private $ipList = ['192.168.219.1','127.0.0.2'];
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        //得到当前IP
        $ip = $request->ip();
        //判断是否在列表中
        if(in_array($ip,$this->ipList)){
            return Result::Error(1,"IP地址错误");
        }
        return $next($request);
    }
}
2,middleware.php
<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    // \think\middleware\SessionInit::class
    //调用对ip地址的检查
    app\middleware\CheckIp::class,
];
3,result/Result.php
<?php
 
namespace app\result;
 
use think\response\Json;
 
class Result {
    //success
    static public function Success($data):Json {
        $rs = [
            'code'=>0,
            'msg'=>"success",
            'data'=>$data,
        ];
        return json($rs);
    }
    //error
    static public function Error($code,$msg):Json {
        $rs = [
            'code'=>$code,
            'msg'=>$msg,
            'data'=>"",
        ];
        return json($rs);
    }
}

三,测试效果

1,当ip地址匹配时: 访问:
http://192.168.219.6:8000/article/onemedia?id=1
返回:   2,当ip地址不匹配时: 访问:
http://127.0.0.1:8000/article/onemedia?id=1
返回:  

四,查看php和thinkphp的版本:

php:
root@lhdpc:~# php --version
PHP 8.0.14 (cli) (built: Dec 23 2021 11:52:42) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
thinkphp:
root@lhdpc:~# cd /data/php/admapi/
root@lhdpc:/data/php/admapi# php think version
v6.0.9 

 

标签:8.0,14,ip,middleware,com,lhdpc,php,data
来源: https://www.cnblogs.com/architectforest/p/15750824.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有