spargon / laravel-auth-logger
Laravel Auth Logger 用于存储用户认证日志,并在用户从新系统登录时发送通知。
Requires
- php: ^7.4|^8.0
- illuminate/auth: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/bus: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/console: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/contracts: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/database: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/http: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/notifications: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- illuminate/support: ^7.30.4|^8.40.0|^9.0|^10.0|^11.0
- jenssegers/agent: ^2.6
- spatie/laravel-package-tools: ^1.4
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0
- phpunit/phpunit: ^9.3
Suggests
- guzzlehttp/guzzle: Required to use the Slack transport (~6.0)
- laravel/slack-notification-channel: Required to send notifications through Slack
README
Laravel Auth Logger 用于存储用户认证日志,并在用户从新系统登录时发送通知。
安装
Laravel Auth Logger 需要 PHP 7.0+,目前支持 Laravel 7、8 和 9。
您可以通过 composer 安装此包
composer require spargon/laravel-auth-logger
安装 Laravel-Auth-Logger 包后,您需要运行安装命令,该命令将处理您开始所需的所有操作。在您的控制台输入以下 artisan 命令:
php artisan auth-logger:install
这将发布 config/auth-logger.php
文件,发布必要的迁移文件,并请求您运行这些迁移的权限。
安装完成后,您需要将 AuthLogable
和 Notifiable
特性添加到您的认证模型中(默认为 App\Models\User
模型)。这些特性为您提供了各种获取认证日志生成数据的方法,例如最后登录时间、最后登录 IP 地址,并设置当用户从新设备登录时通知用户的通道。
use Illuminate\Notifications\Notifiable; use Spargon\AuthLogger\AuthLogable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable, AuthLogable; }
用法
获取用户的全部认证日志
User::find(1)->auths;
获取用户的最后登录信息(包括如果用户已登录,则包括当前会话)
User::find(1)->lastLoginAt(); [or] auth()->user()->lastLoginAt() User::find(1)->lastLoginIp(); [or] auth()->user()->lastLoginIp()
获取用户的先前登录时间和 IP 地址(忽略当前登录日志)
User::find(1)->previousLoginAt(); [or] auth()->user()->previousLoginAt() User::find(1)->previousLoginIp(); [or] auth()->user()->lapreviousLoginIpstLoginAt()
发送新设备警报通知
通知可以通过 mail
或/和 slack
通道发送。默认情况下,AuthLogger 将通过邮件驱动程序发送通知(如果您已在 config/auth-logger.php
文件中启用了 notify
)。
您可以在用户的模型上定义 notifyAuthLoggerVia
方法,以确定通知应发送到哪些通道
/** * The Auth Logger notifications delivery channels. * * @return array */ public function notifyAuthLoggerVia() { return ['mail', 'slack']; }
Slack 通知与自定义
注意:如果您想使用 slack
通知通道,您需要首先安装 laravel/slack-notification-channel
包,否则您的应用程序将抛出 Driver not supported
错误。请确保您阅读了 Laravel 文档中的 Slack 预先条件 此处。
您还需要从 此处 生成 Slack Incoming Webhook,然后将生成的 webhook 添加到您的认证模型中(通常是用户),如下所示:
/** * Route notifications for the Slack channel. * * @param \Illuminate\Notifications\Notification $notification * @return string */ public function routeNotificationForSlack($notification) { return 'https://hooks.slack.com/services/T01D8HUCU4.....'; // replace this with the webhook you receive from Slack }
自定义消息
在 config/auth-logger.php
文件中,您可以自定义 Sender
名称、接收通知的 Channel
以及通知中显示的 Icon
。
默认情况下,所有 Slack 消息都将发送到 #general
通道。
禁用通知
当然,您可以通过将 config/auth-logger.php
配置文件中的 notify
选项设置为 false
来禁用通知。
'notify' => env('AUTH_LOGGER_NOTIFY', false),
用户代理解析器
此包使用 jenssegers/agent
包来解析发送警报通知时用户的用户代理。查看他们的文档 此处。 以了解如何在您的应用程序中使用它(例如,在您的日志表中)。
一段时间后删除日志
您可以使用 auth-logger:clear
artisan 命令清除旧的认证日志记录。
php artisan auth-logger:clear
在运行上述命令时,将删除比您在 config/auth-logger.php
中的 older
选项指定的天数更早的记录。
'older' => 31,
可选文件
您可以使用以下命令发布新设备警报电子邮件视图
php artisan vendor:publish --tag=auth-logger-views
您还可以使用以下命令发布 auth-logger 所使用的翻译文件
php artisan vendor:publish --tag=auth-logger-translations
这些是可选文件。您不需要发布它们即可使包正常工作。它们仅存在于您想要自行修改文件的情况下。
更改数据库表名
如果您想更改 auth-logger 表的名称,可以通过更改 config/auth-logger.php
文件中的 table_name
值来实现(此步骤为可选 - 您还必须在 migrations/database 中更新表名以反映相同的变化)。
实验性功能(dev-geoip)
目前我们正在尝试实现位置标记功能(使用 Torann 的 GeoIP 包)。您可以通过检查 geoip
分支来尝试它,或者使用 composer require spargon/laravel-auth-logger:dev-geoip
从 packagist 获取 dev-geoip 版本。
这是位置标记功能的实验性版本。准确性不能保证达到 100%。使用风险自负。PS:此实验性版本不包含安装命令。
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看我们关于如何报告安全漏洞的 安全策略。
鸣谢
许可协议
MIT 许可协议(MIT)。请参阅 许可文件 了解更多信息。