You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Nova 4中捕获登录事件

Laravel Nova 用户登录日志实现方案

核心思路

Laravel Nova 基于 Laravel 原生认证系统,因此可以利用 Laravel 内置的登录事件监听来实现登录日志记录,无需修改 Nova 核心代码。

实现步骤

  • 1. 生成登录日志监听器
    执行 Artisan 命令创建监听器类:

    php artisan make:listener LogNovaLogin
    
  • 2. 编写日志记录逻辑
    打开生成的 app/Listeners/LogNovaLogin.php 文件,替换 handle 方法内容,添加登录信息记录逻辑:

    <?php
    
    namespace App\Listeners;
    
    use Illuminate\Auth\Events\Login;
    use Illuminate\Support\Facades\Log;
    
    class LogNovaLogin
    {
        /**
         * 处理登录事件
         */
        public function handle(Login $event): void
        {
            // 仅过滤 Nova 后台的登录请求
            if (request()->is('nova/*')) {
                Log::info('Nova 后台用户登录', [
                    '用户ID' => $event->user->id,
                    '邮箱' => $event->user->email,
                    '登录时间' => now()->toDateTimeString(),
                    'IP地址' => request()->ip(),
                    '客户端信息' => request()->userAgent(),
                ]);
            }
        }
    }
    
  • 3. 注册事件监听器
    打开 app/Providers/EventServiceProvider.php,在 $listen 数组中关联登录事件与监听器:

    protected $listen = [
        \Illuminate\Auth\Events\Login::class => [
            \App\Listeners\LogNovaLogin::class,
        ],
    ];
    

补充说明

  • 日志默认存储在 storage/logs/laravel.log,可通过 config/logging.php 配置调整存储路径、格式或日志通道
  • 如果需要针对 Nova 登录做更复杂的自定义逻辑,也可以通过发布 Nova 登录控制器并重写 login 方法实现,但事件监听的方式更轻量化且符合 Laravel 生态规范

内容的提问来源于stack exchange,提问作者Antonio J.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:13:10