spargon/laravel-auth-logger

Laravel Auth Logger 用于存储用户认证日志,并在用户从新系统登录时发送通知。

1.6.0 2024-06-05 11:53 UTC

This package is auto-updated.

Last update: 2024-09-05 12:31:08 UTC


README

GitHub release GitHub issues Software License Total Downloads StyleCI

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 文件,发布必要的迁移文件,并请求您运行这些迁移的权限。

Install Command Sample

安装完成后,您需要将 AuthLogableNotifiable 特性添加到您的认证模型中(默认为 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)。请参阅 许可文件 了解更多信息。