php - Laravel 5.2 登录事件处理

标签 php laravel events authentication laravel-5.2

在数据库中,我有一个包含列 last_login_at 的表 users。每次当一些用户登录时 - 我想更新 last_login_at

因此,我创建了 app/Listeners/UpdateLastLoginOnLogin.php:

namespace App\Listeners;

use Carbon\Carbon;

class UpdateLastLoginOnLogin
{
    public function handle($user, $remember)
    {
        $user->last_login_at = Carbon::now();

        $user->save();
    }
}

在 app/Providers/EventServiceProvider 中:

    protected $listen = [
        'auth.login' => [
            'App\Listeners\UpdateLastLoginOnLogin',
        ],
    ];

但这不起作用,事件未处理。这里已经提到了同样的问题:EventServiceProvider mapping for Laravel 5.2 login但没有解决方案。我试过这样做:

...

use Illuminate\Auth\Events\Login;

class UpdateLastLoginOnLogin
{
    public function handle(Login $event)
    {
        $event->user->last_login_at = Carbon::now();
        $event->user->save();
    }
}

和:

protected $listen = [
    'Illuminate\Auth\Events\Login' => [
        'App\Listeners\UpdateLastLoginOnLogin',
    ],
];

但它不起作用。

另外,我检查了这个:https://laracasts.com/discuss/channels/general-discussion/login-event-handling-in-laravel-5但是 php artiasn clear-compiled 没有解决问题。

编辑:有关其他详细信息,这里有一个指向实际上完全相同(以相同方式完成)的项目的链接:https://github.com/tutsplus/build-a-cms-with-laravel

最佳答案

你就快完成了,只是还有一些变化,用于身份验证的事件和监听器在 Laravel 5.2 中发生了一些变化: UpdateLastLoginOnLogin 中的 handle 方法应该只有一个事件作为参数

namespace App\Listeners;

use Carbon\Carbon;
use Auth;

class UpdateLastLoginOnLogin
{
    public function handle($event)
    {
        $user = Auth::user();
        $user->last_login_at = Carbon::now();
        $user->save();
    }
}

对于EventServiceProvider,您可以像这样指定监听器:

protected $listen = [
    'Illuminate\Auth\Events\Login' => [
        'App\Listeners\UpdateLastLoginOnLogin@handle',
    ],
];

关于php - Laravel 5.2 登录事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295062/

相关文章:

php - PayPal 捐赠按钮 最低捐赠金额

laravel - Blade 模板中的意外结束

database - 与用户表相比,学生与教师之间的正确结构关系

events - F# 使用代理将历史事件与两个代理之间的模拟交互交错

php - FullCalendar refetchEvents 无法读取 null 的属性 'format'

php - BuddyPress,发布新故事时发送通知

javascript - 如何在页面加载时从表加载一定数量的行,并且仅在用户加载它们时才加载更多行?

php - 身份验证后始终重定向到根路径 [laravel]

php - Laravel 高级搜索查询

typescript - 在 TypeScript 类中创建自定义事件