ivanomatteo / laravel-device-tracking
一个允许跟踪不同设备的库
Requires
- php: >=8.0
- hisorange/browser-detect: ^4.5
Requires (Dev)
- orchestra/testbench: ^7.15
- phpunit/phpunit: ^9.5
README
此包实现了类似于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)。有关更多信息,请参阅许可文件。