Лучше использовать комбинацию user_agent
и ip
для получения более точных результатов, многие пользователи могут иметь один и тот же IP-адрес, но обычно имеют разные пользовательские агенты:
request()->userAgent();
request()->ip();
В качестве альтернативы, если вы используете web
middleware (не api
), Laravel запускает сеанс для каждого клиента. Вы можете изменить свой драйвер сеанса и использовать database
вместо значения по умолчанию file
.
Таким образом Laravel будет хранить запись для каждого клиента в таблице sessions
, содержащую всю необходимую информацию и даже больше:
Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->unsignedInteger('user_id')->nullable();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->text('payload');
$table->integer('last_activity');
});
Как видите, есть ip_address
, user_agent
и last_activity
. user_id
будет null
для гостевых пользователей и имеет значение для аутентифицированных пользователей.
См. Laravel документы , чтобы настроить драйвер сеанса для использования database
.