2016-05-12 29 views
0

我记录了我的网站,访客用户和认证用户的请求,但后来我遇到了一个问题,如果用户登录和404异常踢在那种情况下,我的身份验证::用户()为空,Laravel v5.2将中间件从Web组移动到全局?

class LoggingMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     return $next($request); 
    } 


    public function terminate($request, $response) 
    { 
     $info = []; 
     //$info = get everything i need from request and response. 
     $info['user_detail'] = Auth::user()->id; 
     var_dump(Auth::user()); 
     dispatch(new LogRequests($info)); 
    } 
} 

我做了什么,然后将StartSession中间件从web组移到全局中间件组。现在它工作正常。将Web组中的中间件移至全局网络可能会产生问题吗?

回答

0

每次向应用程序发出HTTP请求时都会运行全局中间件,所以如果您的LoggingMiddleware的上下文符合此要求,那么应该没有问题。

+0

实际上,当内核开始处理请求时,首先运行全局中间件,然后匹配来自请求的路由的路由,如果匹配,则运行其他中间件组,如果路由不匹配,它将不会启动会话,我们无法获得用户甚至从$ request-> user() – rummykhan

+0

对于你的情况你是正确的,你将无法访问当前用户而不移动它到全局组。你所做的应该没问题。编辑答案来反映这一点。 –

+0

该代码仍处于测试阶段,我只是想确定是否有任何此后的影响。 – rummykhan