Laravel 5.3 auth check in constructor returning false Laravel 5.3 auth check in constructor returning false laravel laravel

Laravel 5.3 auth check in constructor returning false


docs

you can't access the session or authenticated user in your controller's constructor because the middleware has not run yet.

As an alternative, you may define a Closure based middleware directly in your controller's constructor. Before using this feature, make sure that your application is running Laravel 5.3.4 or above:

class ProjectController extends Controller{    /**     * All of the current user's projects.     */    protected $projects;    /**     * Create a new controller instance.     *     * @return void     */    public function __construct()    {        $this->middleware(function ($request, $next) {            $this->projects = Auth::user()->projects;            return $next($request);        });    }}


Since 5.3 Auth::check will not work in a controller's construtor, it's one of undocumented changes. So, you need to move it to middleware or do check in controller methods instead or move project to 5.2.x.


It fails because you call $this->middleware('auth'); after parent::__construct();. It means that you auth middleware is not loaded properly.