Php Laravel 5.3验证签入构造函数返回false

Php Laravel 5.3验证签入构造函数返回false,php,laravel,authentication,laravel-5.3,Php,Laravel,Authentication,Laravel 5.3,我正在使用Laravel 5.3并试图在constructor方法中获得用户的id,因此我可以按指定公司筛选用户,如下所示: namespace App\Http\Controllers; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller as BaseController; use Illuminate\Foundation\Validation\ValidatesRequests;

我正在使用
Laravel 5.3
并试图在
constructor
方法中获得用户的
id
,因此我可以按指定公司筛选用户,如下所示:

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\View;
use App\Models\User;
use App\Models\Company;
use Illuminate\Support\Facades\Auth;


class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests ;

    public $user;
    public $company;


    public function __construct()
    {


        $companies = Company::pluck('name', 'id');
        $companies->prepend('Please select');
        view()->share('companies', $companies);
        $this->user = User::with('profile')->where('id', \Auth::id())->first();
        if(isset($this->user->company_id)){
            $this->company = Company::find($this->user->company_id);
            if (!isset($this->company)) {
                $this->company = new Company();
            }
            view()->share('company', $this->company);
            view()->share('user', $this->user);
        }

    }
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        dd(\Auth::check());
        return view('home');
    }
}
但是,这不会返回用户
id
。我甚至试过
Auth::check()
,但都不起作用

如果我将
Auth::check()
移出
\uuu construct()
方法,则其工作原理如下:

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\View;
use App\Models\User;
use App\Models\Company;
use Illuminate\Support\Facades\Auth;


class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests ;

    public $user;
    public $company;


    public function __construct()
    {


        $companies = Company::pluck('name', 'id');
        $companies->prepend('Please select');
        view()->share('companies', $companies);
        $this->user = User::with('profile')->where('id', \Auth::id())->first();
        if(isset($this->user->company_id)){
            $this->company = Company::find($this->user->company_id);
            if (!isset($this->company)) {
                $this->company = new Company();
            }
            view()->share('company', $this->company);
            view()->share('user', $this->user);
        }

    }
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        dd(\Auth::check());
        return view('home');
    }
}

它失败,因为您调用了
$this->middleware('auth')
parent::\uu construct()之后。这意味着您未正确加载验证中间件。

由于5.3
auth::check
在控制器的构造函数中不起作用,这是未记录的更改之一。所以,您需要将其移动到中间件,或者改为签入控制器方法,或者将项目移动到5.2.x.

您无法访问服务器中的会话或经过身份验证的用户 控制器的构造函数,因为中间件尚未运行

或者,您可以直接定义基于闭包的中间件 在控制器的构造函数中。在使用此功能之前,请确保 您的应用程序运行的是Laravel 5.3.4或更高版本:


我把它放在父对象之后::_construct();这没什么区别。我甚至删除了中间件,没有任何区别。你有代码示例吗?真的吗?我没意识到!crap@Alexey梅泽宁,看来你是拉威尔大师。我需要你的帮助。看这里:谢谢。但是你是怎么知道的?@ABDEL-RHMAN我的是5.3.4,它不能做你知道如何升级到你的版本吗?@ABDEL-RHMAN完成了,工作和你说的一模一样,谢谢