sureshinde/laravel-auth-checker

Laravel Auth Checker 允许您记录用户认证、认证设备和锁定入侵。

v3.0.1 2024-02-20 13:29 UTC

This package is auto-updated.

Last update: 2024-09-20 14:36:13 UTC


README

Build Status Scrutinizer Code Quality

Laravel Auth Checker 是一个插件,用于在用户认证时收集登录信息和使用的设备。它使得轻松捕获来自新 IP 地址或新设备的用户认证尝试和锁定变得简单。

Example logins table

要求

  • Laravel 9 到 10
  • PHP 8.0 到 8.2

Laravel 支持

安装

  • 使用 Composer 安装它
composer require sureshinde/laravel-auth-checker
  • SureShinde\AuthChecker\Models\HasLoginsAndDevices 特性和 SureShinde\AuthChecker\Interfaces\HasLoginsAndDevicesInterface 接口添加到您的 User 模型中。
use SureShinde\AuthChecker\Models\HasLoginsAndDevices;
use SureShinde\AuthChecker\Interfaces\HasLoginsAndDevicesInterface;

class User extends Authenticatable implements HasLoginsAndDevicesInterface
{
    use Notifiable, HasLoginsAndDevices;  
}
  • 发布迁移并迁移您的数据库
php artisan vendor:publish --tag=auth-checker
php artisan migrate

注意:发布迁移是为了您在需要将迁移时间戳自定义以集成到现有项目中的情况下。

访问收集的数据

此库收集有关您的用户的登录数据和设备数据。

登录

// Your user model:
$logins = $user->logins;
// Output: 
[
    [
        'ip_address' => '1.2.3.4',
        'device_id' => 1, // ID of the used device
        'type' => 'auth',
        'device' => [
            // See Devices
        ],
        'created_at' => '2017-03-25 11:42:00',
    ],
    // ... and more
]

此外,您还可以直接按类型访问登录

  • $user->auths 返回成功的登录(通过 Login::TYPE_LOGIN
  • $user->fails 返回失败的登录(通过 Login::TYPE_FAILED
  • $user->lockouts 返回被锁定的登录(通过 Login::TYPE_LOCKOUT

设备

// Your user model:
$devices = $user->devices;
// Outputs:
[
    [
        'platform' => 'OS X',
        'platform_version' => '10_12_2',
        'browser' => 'Chrome',
        'browser_version' => '54',
        'is_desktop' => true,
        'is_mobile' => false,
        'language' => 'fr-fr',
        'login' => [
          // See logins
        ],
    ],
    // ... and more
]

路线图

  • 记录用户认证
  • 收集 IP 地址
  • 收集设备
  • 获取用户的登录历史记录
  • 获取设备历史记录
  • 捕获失败的登录
  • 捕获锁定登录
  • 信任/不信任设备
  • 当未知设备登录时通知用户

事件

有许多事件可用于向您的应用程序添加功能

  • LoginCreated 在用户认证时触发。
  • DeviceCreated 在为用户创建新设备时触发。
  • FailedAuth 在用户登录失败时触发。
  • LockoutAuth 在用户的认证被锁定(尝试次数过多)时触发。

每个事件都将 Login 模型和 Device 模型传递给您的监听器。

实用用法

一旦将 HasLoginsAndDevices 特性添加到您的 User 模型中,它将扩展以下方法

  • logins() 返回所有登录
  • auths() 返回所有成功的登录尝试
  • fails() 返回所有失败的登录尝试
  • lockouts() 返回所有锁定

返回的每个登录都与使用的 Device 模型相关联。

  • devices() 返回用户用于认证的所有设备。

测试

vendor/bin/phpunit

贡献者

许可证

MIT