IP-адрес может быть проверен в любом месте, но если требуется получить, прежде чем Passport потребуется промежуточное программное обеспечение:
создать приложение / Http / Middleware / IpMiddleware.php класс
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
class IpMiddleware
{
public function handle(Request $request, \Closure $next)
{
$ip = null;
if (getenv('HTTP_CF_CONNECTING_IP')) {
$ip = getenv('HTTP_CF_CONNECTING_IP');
} else if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('HTTP_X_FORWARDED')) {
$ip = getenv('HTTP_X_FORWARDED');
} else if (getenv('HTTP_FORWARDED_FOR')) {
$ip = getenv('HTTP_FORWARDED_FOR');
} else if (getenv('HTTP_FORWARDED')) {
$ip = getenv('HTTP_FORWARDED');
} else if (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
}
if (!$ip || $ip === '::1') {
$ip = $request->ip();
}
$ipAddress = \explode(',', $ip ?? '127.0.0.1')[0];
return $next($request);
}
}
в app / Http / Kernel.php add 'ip' => \ App \ Http \ Middleware \ IpMiddleware :: class,
protected $routeMiddleware = [
'ip' => \App\Http\Middleware\IpMiddleware::class,
];
в routes/web.php
Route::group(['middleware' => ['ip', 'auth:api']], function () {
//your routes
});