在 laravel 8 中将数组定义为 .env 变量

Has*_*iya 3 php environment-variables laravel laravel-middleware laravel-8

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

BLOCK_IP_LIST = [127.0.0.1,127.0.0.2,127.0.0.3]
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。

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

Config.app.php代码如下

'block_ip' => env('BLOCK_IP_LIST'),
Run Code Online (Sandbox Code Playgroud)

我的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Moh*_*din 5

你的BlockIpMiddleware没问题

.env应该看起来像那样

BLOCK_IP_LIST=127.0.0.1,127.0.0.2,127.0.0.3
Run Code Online (Sandbox Code Playgroud)

里面app.php

'block_ip' => explode(',', env('BLOCK_IP_LIST')),
Run Code Online (Sandbox Code Playgroud)

爆炸查找,并将字符串转换为数组。


我的想法

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