ivanomatteo/laravel-device-tracking

一个允许跟踪不同设备的库

1.0.0 2024-06-19 15:18 UTC

This package is auto-updated.

Last update: 2024-09-19 15:45:47 UTC


README

Latest Version on Packagist

Total Downloads

此包实现了类似于Google的设备检测。

您可以检测用户是否正在使用新设备,并管理用户和设备之间的验证状态。

您还可以检测可能的设备劫持。

安装

您可以通过composer安装此包

composer require ivanomatteo/laravel-device-tracking

发布迁移

php artisan vendor:publish --provider "IvanoMatteo\LaravelDeviceTracking\LaravelDeviceTrackingServiceProvider" --tag migrations

运行迁移

php artisan migrate

发布配置文件

php artisan vendor:publish --provider "IvanoMatteo\LaravelDeviceTracking\LaravelDeviceTrackingServiceProvider" --tag config

用法

use IvanoMatteo\LaravelDeviceTracking\Facades\DeviceTracker;
use IvanoMatteo\LaravelDeviceTracking\Traits\UseDevices;

// add the trait to your user model
class User {
    use UseDevices;
}


// call on login or when you want update and check the device informations
// by default this function is called when the Login event is fired 
// only with the "web" auth guard
// if you want you can disable the detect_on_login option in the config file
$device = DeviceTracker::detectFindAndUpdate();


// flag as verified for the current user
DeviceTracker::flagCurrentAsVerified();

// flag as verified for a specific user
DeviceTracker::flagAsVerified($device, $user_id);

// flag as verified for a specific user by device uuid
DeviceTracker::flagAsVerifiedByUuid($device_uuid, $user_id);

如果您使用会话认证,可以在app/Http/Kernel.php中添加中间件 IvanoMatteo\LaravelDeviceTracking\Http\Middleware\DeviceTrackerMiddleware,在web组末尾。

这样,设备也会在后续的登录请求中进行检查。DeviceTrackerMiddleware 将md5(request()->ip() . $device_uuid . $user_agent)存储在会话中,因此只有当哈希值不匹配时,才会再次执行检测。

以下事件可以发出

  • DeviceCreated

    当检测到新设备并存储时

  • DeviceUpdated

    当设备的一些信息发生变化时

  • DeviceHijacked

    当关键设备信息发生变化时。您还可以定义自定义的 DeviceHijackingDetector。在此事件之后,设备将被更新,下次不会发出 DeviceHijacked,但设备将具有 device_hijacked_at 字段,该字段包含最后一个 DeviceHijacked 事件的时间戳。

  • UserSeenFromNewDevice

    当检测到用户首次在设备上时

  • UserSeenFromUnverifiedDevice

    当检测到用户首次在设备上时,但设备未被标记为已验证

变更日志

请参阅CHANGELOG 了解最近更改的更多信息。

贡献

请参阅CONTRIBUTING 了解详细信息。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件ivanomatteo@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件