【问题标题】:Defining an array as an .env variable in laravel 8在 laravel 8 中将数组定义为 .env 变量
【发布时间】:2021-12-10 16:03:37
【问题描述】:

我有一个从中提取数据的数组。

BLOCK_IP_LIST = [127.0.0.1,127.0.0.2,127.0.0.3]

我不知道该怎么做。

我在 BlockIpMiddleware 中使用 .env BLOCK_IP_LIST 使用 Config>app.php

Config.app.php 类似代码

'block_ip' => env('BLOCK_IP_LIST'),

我的 BlockIpMiddleware 类似代码

class BlockIpMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        $blockIps = config('app.block_ip');

        if (in_array($request->ip(), $blockIps)) {
            return response()->json(['message' => "You don't have permission to access this website."]);
        }
        return $next($request);
    }
}

【问题讨论】:

    标签: php laravel environment-variables laravel-8 laravel-middleware


    【解决方案1】:

    你的BlockIpMiddleware没问题

    但是.env 应该是这样的

    BLOCK_IP_LIST=127.0.0.1,127.0.0.2,127.0.0.3
    

    内部app.php

    'block_ip' => explode(',', env('BLOCK_IP_LIST')),
    

    explode 找到, 并将字符串转换为数组。


    我的看法

    您应该对数据库执行此操作并将其永久缓存,因为您/客户可以随时根据需要添加/删除 IP。

    【讨论】:

      【解决方案2】:

      将数组存储在.env 文件中是不好的,因为它仅用于保存小文本值,存储和字符串数组很可能意味着此列表将超时。 但要回答您的问题,有一个技巧可以完成。

      .ENV 文件

      BLOCK_IP_LIST = "127.0.0.1,127.0.0.2,127.0.0.3"
      

      现在为您的Config > app.php 文件:

      'block_ip' => explode(',', env('BLOCK_IP_LIST')),
      

      这应该能让你启动并运行,记得清除你的配置缓存。

      【讨论】:

        【解决方案3】:

        您可以将数据保存为 .env 文件中的 json

        BLOCK_IP_LIST={"127.0.0.1","192.168.1.2"}
        

        在您的控制器中,您可以使用

        访问您的数据
        $black_lists = json_decode(env('BLOCK_IP_LIST')); 
        

        【讨论】:

          猜你喜欢
          • 2021-10-31
          • 2021-03-26
          • 2018-06-29
          • 2021-08-03
          • 2021-05-30
          • 1970-01-01
          • 1970-01-01
          • 2015-10-11
          • 2020-01-12
          相关资源
          最近更新 更多