代码之家  ›  专栏  ›  技术社区  ›  Fil

控制器返回`false`而仪表板控制器返回`true`

  •  0
  • Fil  · 技术社区  · 5 年前

    我正在运行Laravel6.11

    默认情况下我们有这个

    class Controller extends BaseController
    {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    
        public function __construct()
        {
            dd(Auth::check());    
        }
    }
    

    我把我的控制器定义成这样,

    class DashboardController extends Controller
    {
        /**
         * Display dashboard
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {       
            dd(Auth::check());
        }
    }
    

    现在用户成功登录,

    在不同的时间访问同一个页面、仪表板

    控制器回路 false true

    为什么?

    1 回复  |  直到 5 年前
        1
  •  2
  •   patricus    5 年前

    As of Laravel 5.3 ,无法访问控制器构造函数中的会话(包括身份验证)。但是,您可以在构造函数中定义一个中间件闭包,该闭包可以访问会话。

    class Controller extends BaseController
    {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    
        public function __construct()
        {
            $this->middleware(function ($request, $next) {
                dd(Auth::check());    
            });
        }
    }