123456789101112131415161718192021222324252627282930313233343536373839 |
- <?php
- namespace App\Http\Middleware;
- use App\DataApiNew\Models\AgentApi;
- use Closure;
- use Illuminate\Http\Request;
- use Vinkla\Hashids\Facades\Hashids;
- class IpWhitelist
- {
- /**
- * @param \Illuminate\Http\Request $request
- * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
- * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
- */
- public function handle(Request $request, Closure $next)
- {
- $user_key = $request->input('user_key');
- $user_id = data_get(Hashids::decode($user_key), '0');
- if (!$user_id) {
- return error('无效的用户密钥');
- }
- // 白名单 IP 列表
- $whitelist = AgentApi::where('user_id', $user_id)->value('ip_whitelist');
- $whitelistArr = array_map('trim', explode("\n", $whitelist));
- // 获取客户端的 IP 地址
- $clientIp = $request->getClientIp();
- if (!in_array($clientIp, $whitelistArr)) {
- return error('IP未加入白名单');
- }
- return $next($request);
- }
- }
|