Laravel - 只有在用户登录时才能绑定类的最佳方法

时间:2018-03-20 16:08:05

标签: laravel binding

我只需要在用户登录时绑定单例类...我知道我应该绑定我的类的最佳位置是服务提供者和方法寄存器(),但是在这个阶段用户身份验证还没有开始。

我通过像这样的事件绑定来解决这个问题:

Event::listen('Illuminate\Auth\Events\Authenticated', function ($authenticated) {
    app()->singleton( MyClass::class, function ($app) use($authenticated) {
        // $authenticated->user or Request::user()
        return new MyClass( Request::user() );
    });
});    

此代码工作正常,但我不确定这是个好主意。哪个最好? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

例如,您的服务提供商(AppServiceProvider)中的这个怎么样?

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    if (Auth::check()) {
        app()->singleton(MyClass::class, function ($app) {
            return new MyClass(Auth::user());
        });
    }
}