маршрутизация в Laravel с несколькими Htaccess - PullRequest
0 голосов
/ 04 мая 2018

Мне нужен конкретный файл htaccess для определенного маршрута.

Например, я хочу разрешить всем ips домашний маршрут моего сайта, но запретить доступ к определенным ips только для маршрута оплаты или определенных маршрутов.

Пожалуйста, помогите мне с этой проблемой.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Вы можете использовать три решения:

  1. Laravel Middleware

здесь:

namespace App\Http\Middleware;

use Closure;

use Symfony\Component\HttpFoundation\IpUtils;

class RedirectInvalidIPs
{

    protected $ips = [
        '65.202.143.122',
        '148.185.163.203'
    ];

    protected $ipRanges = [
        '10.11.3.1',
    ];

    /**
     * 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);
    }

    protected function isValidIp($ip)
    {
        return in_array($ip, $this->ips);
    }

    protected function isValidIpRange($ip)
    {
        return IpUtils::checkIp($ip, $this->ipRanges);
    }
}
  1. . Htaccess

здесь:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} /thisdirectoryandallcontents
RewriteCond %{REMOTE_ADDR} !=111.111.111.111
RewriteRule ^.*$ /maintenance.php [R=302,L]

Nginx разрешить и запретить IP

  1. CloudFlare

Как мне контролировать IP-доступ к моему сайту?

0 голосов
/ 04 мая 2018

Вы должны использовать middleware для контроля доступа, для этого технически можно использовать .htaccess can, но настоятельно не рекомендуется.

Грубый пример возможной логики фильтрации по ip, которую можно поместить в функцию дескриптора вновь созданного промежуточного программного обеспечения:

    if (!in_array($request->ip, ['127.0.0.1', '::1'])) {
        abort(403);
    }

    return $next($request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...