Auth::user() returns null

I faced a situation where Auth::user() always returns null, it was because I was trying to get the User in a controller’s constructor.

I realized that you can’t access the authenticated user in your controller’s constructor because the middleware has not run yet.

As an alternative, you can define a Closure based middleware directly in your controller’s constructor.

namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;

class ProjectController extends Controller
{
    protected $user;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware(function ($request, $next) {

            $this->user = Auth::user();

            return $next($request);
        });
    }
}

Leave a Comment