laravel5.4在类的构造函数中打印Auth::check();返回的是false,在类的方法中打印又是返回true

求助求助!laravel5.4在类的构造函数中打印Auth::check();返回的是false,在类的方法中打印又是返回true,确定是已经登录了哦

如图:

返回的是false

原因

自Laravel 5.3 开始把路由分组以后,就有这个问题了。原因是 construct 运行时 middleware 未运行。

解决

use Closure;

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

    protected $user;

    public function __construct(Request $request)
    {
        $this->middleware(function($request,Closure $next){

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

            return $next($request);

        });

    }
}

function __construct(Request $request)

{
    $this->middleware(function ($request, $next) {
        dd(Auth::check());
    });
}

根据截图来看,你这些类是 Services ,是不是在 Provider 的 Register 中进行了绑定?

如果是在Provider中进行了绑定,那么在构造函数中 Auth::check(); 肯定是false的。

根据你的部分代码只能猜其中原因了。

  • 如何根据下拉菜单选择后通过ajax获取后台数据并且不刷新页面
  • 微信小程序电商务搜索页排序功能的逻辑
  • 单例模式中的普通成员属性相当于静态属性吗?
  • php执行时间较长任务,怎么在web端输出实时结果
  • CodeIgniter 模板输出的问题
  • PHP权限管理的问题
  • 脚本安装zabbix 报错MySQL library not found
  • PHP数组转对象之后,怎么用对象的方式访问数据
  • php二维数组去除重复,重复值相加
  • php的pdo_mysql扩展在哪下载?(pecl上面说这包已经不再维护,并被取代了)
  • laravel中的Facades和Ioc Container怎么理解?