بررسی دسترسی به پروژه لاراول با آی پی آدرس

۱۳ اردیبهشت ۱۳۹۷

طراحی سایت

امروز می خواهیم با استفاده از لاراول IP هایی که به وب اپلیکشن ما ورود می کنیم را کنترل کنیم. برای این کار از middleware استفاده می کنیم.پس در CMD خود دستور زیر را اجرا می کنیم تا یک middleware ساخته شود:


    php artisan make:middleware IPAddresses

کدهای زیر را به app/Http/Middleware/IPAddresses.php اضافه می کنیم:


class IPAddresses
{
    public function handle($request, Closure $next)
    {
        if ($request->ip() != 'xxx.xxx.xxx.xxx') {
            abort(403);
        }
        return $next($request);
    }
}

چند نکته وجود دارد:

  • شما برای دریافت IP از

    $_SERVER[‘REMOTE_ADDR’]

    در PHP می توانید استفاده کنید.

  • به جای abort می توانید کاربر را به صفحه دلخواه خود redirect کنید.

شما برای استفاده از کلاس middleware باید آنرا داخل app/Kernel.php اضافه کنید:


protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    // ... other middleware classes

    \App\Http\Middleware\IPAddresses::class,
];

اگر بخواهید middleware را گسترش دهید به شکل زیر می توانید عمل کنید:


namespace App\Http\Middleware;

use Closure;
use Symfony\Component\HttpFoundation\IpUtils;

class RedirectInvalidIPs
{
    /**
     * List of valid IPs.
     *
     * @var array
     */
    protected $ips = [
        '42.60.187.198',
        '188.102.29.159',
    ];

    /**
     * List of valid IP-ranges.
     *
     * @var array
     */
    protected $ipRanges = [
        '12.64.103.24',
    ];

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        foreach ($request->getClientIps() as $ip) {
            if (! $this->isValidIp($ip) && ! $this->isValidIpRange($ip)) {
                return redirect('/');
            }
        }

        return $next($request);
    }

    /**
     * Check if the given IP is valid.
     *
     * @param $ip
     * @return bool
     */
    protected function isValidIp($ip)
    {
        return in_array($ip, $this->ips);
    }

    /**
     * Check if the ip is in the given IP-range.
     *
     * @param $ip
     * @return bool
     */
    protected function isValidIpRange($ip)
    {
        return IpUtils::checkIp($ip, $this->ipRanges);
    }
}

 نویسنده:حمید شاه محمدی
 تعداد مشاهده خبر:(676)
 هر روز از مقاله های جدید طراحی سایت در کانال تلگرام ما با خبر شوید

 میانگین امتیازات:
 
  تعداد رای دهندگان: {{ count }}
نظرات:

{{ x }}
{{ alert }}

نویسنده:{{ com.name }}
{{ com.body }}
{{ com.created_at }}