AppServiceProvider Laravel 5.5 中无法访问身份验证数据

Thi*_*aru 0 authentication laravel-5

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use App\Classes\DynamicMenu;
use App\Http\Controllers\WelcomeController;
use Auth;

class AppServiceProvider extends ServiceProvider
{

    public function boot()
    {
       dd(Auth::user());   
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说返回“null”,但其他控制器返回用户详细信息。如何解决这个问题?

Sai*_*nce 5

为什么?

这是因为,当boot调用服务提供者的方法时,用户还没有被认证。


解决方案:

我猜您正在尝试使用View Composers

文档中:

那么,如果我们需要在我们的服务提供商中注册视图编辑器怎么办?这应该在 boot 方法中完成。在注册所有其他服务提供者之后调用此方法,这意味着您可以访问框架已注册的所有其他服务:

所以你可以使用以下内容:

public function boot(Guard $auth) {
    view()->composer('*', function($view) use ($auth) {
        $user = $auth->user();

        // other application logic...

        $view->with('currentUser', $user);
    });
}
Run Code Online (Sandbox Code Playgroud)