如何在事件监听器中获取已认证用户 - Laravel

3

我正在尝试确定在事件监听器中获取经过身份验证的用户信息的正确方法。

我可以始终使用 \Auth:user(),它似乎可以工作,但如果我将侦听器加入队列,我不认为它会起作用。

我需要将经过身份验证的用户添加到每个事件的事件类中作为属性,还是有其他方法可以做到这一点?


通过事件传递它。当事件被触发时,您可以访问Auth :: user() - DevK
1个回答

6

请用户参加活动。当事件触发时,您应该可以访问Auth门面。

事件:

class SomeEvent
{
    // Public so that it will be accessible from the listener
    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
}

监听器:

class SomeListener
{
    public function handle(SomeEvent $event)
    {
        // Get the public property `$user` from the event
        $authUser = $event->user;
    }
}

触发器:

event(new SomeEvent(auth()->user()));

这正是我所想的。我从存储库和模型中触发事件。你认为在那里使用auth()->user()是一个正确的想法吗?而不是将其传递给事件。我能否直接将auth()->user()放入事件的构造函数中? - Ankit
是的,你可以。我想为监听器编写测试可能会更困难,因为你不能只是将用户传递给模型构造函数。但它会起作用。 - DevK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接