jeffersonsimaogoncalves / laravel-device-tracking
一个允许跟踪不同设备使用的库
Requires
- php: ^8.0
- hisorange/browser-detect: ^4.4
- laravel/framework: ^9.0
README
此包实现了类似于“谷歌”的设备检测。
您可以检测用户是否在使用新设备,并管理用户与设备之间的验证状态。
您还可以检测可能的设备劫持。
安装
您可以通过composer安装此包
composer require jeffersonsimaogoncalves/laravel-device-tracking
php artisan migrate
发布配置文件
php artisan vendor:publish --provider "IvanoMatteo\LaravelDeviceTracking\LaravelDeviceTrackingServiceProvider" --tag config
用法
// add the trait to your user model class User{ //... use IvanoMatteo\LaravelDeviceTracking\Traits\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);
如果您使用的是Session认证,可以在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 了解详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 gerson.simao.92@gmail.com 而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。请参阅 许可文件 了解更多信息。