【问题标题】:Laravel-Event: How to use Auth::user() in a Event?Laravel-Event:如何在事件中使用 Auth::user()?
【发布时间】:2016-12-08 12:08:13
【问题描述】:

当我在 CandidateEvent 中询问 if(Auth::user()->role == "xxxx") 时显示“尝试获取非对象的属性”

问题是组件 Auth::user() 在我的事件中不起作用。

在事件中使用 Auth 的正确方法是什么?

public function __construct()
{
    if(Auth::user()->role == "XXXX")
    {
        $candidate = count(Candidate::CountNewCandidate());
    }
    else
    {
        $candidate = count(Candidate::CountNewCandidateGroup());
    }
    $this->data = [ 'cCandidate' => $candidate ];        
}

【问题讨论】:

  • 代码图像不是一个好主意。请考虑重新格式化您的问题。
  • 对不起,我是新人。现在? (是事件代码)
  • 将用户传递给数据中的事件。
  • 成功了,感谢您的帮助

标签: php laravel laravel-events


【解决方案1】:

Auth::user() 在事件中为 null 的原因(特别是在排队的情况下)是因为没有用户。身份验证数据通常存储在会话中,当您的事件被触发时,没有会话变量因此没有会​​话数据。

过去我在事件中传递了用户,然后在我会调用的事件处理程序中对用户进行身份验证:

\Auth::attempt(['email', $event->performedBy()->email]);

这是必要的,因为我的应用程序有许多与身份验证紧密耦合的功能(而不是用户接口)。理想情况下,我可以将用户作为依赖项传入。

【讨论】:

    【解决方案2】:

    我解决了它通过路由中的数据将用户传递给事件:

      Route::group(['middleware' => ['xxxx']], function () {
        event(new NameEvent($data));
        Route::auth();
    });
    

    【讨论】:

      【解决方案3】:

      如果没有经过身份验证的用户Auth::user() 将返回null,因此Auth::user()->role 将引发Trying to get property of non-object;尝试使用Auth::check()检查是否有经过身份验证的用户,然后您可以检查角色:

      public function __construct()
      {
          if(auth()->check() && auth()->user()->role == "XXXX")
          {
              $candidate = count(Candidate::CountNewCandidate());
          }
          else
          {
              $candidate = count(Candidate::CountNewCandidateGroup());
          }
          $this->data = [ 'cCandidate' => $candidate ];        
      }
      

      注意:我使用了辅助函数auth()

      希望对你有所帮助。

      【讨论】:

      • 问题是组件 Auth::user() 在我的事件中不起作用,我已经在使用“Illuminate\Support\Facades\Auth”;
      • 尝试使用助手 auth() , auth()->user() ?
      【解决方案4】:

      您似乎没有为 Auth 外观导入命名空间。您必须在声明中添加它

      use Illuminate\Support\Facades\Auth;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2020-11-05
        • 1970-01-01
        • 2017-03-29
        • 2016-12-27
        • 2019-04-06
        • 2016-02-02
        相关资源
        最近更新 更多