2017-04-10 122 views
0

我在Laravel应用程序中发现了一个奇怪的行为。未调用Laravel未经身份验证的处理程序

我的路线是这样的:

Route::group(['as' => 'web', 'middleware' => ['web']], function() 
{ 
    Route::group(['middleware'=>['auth']], function() { 
     Route::get('personal', 'Web\[email protected]'); 
    } 
} 

在我的应用程序/例外/ Handler.php,我这样定义的未经验证的功能:

protected function unauthenticated($request, AuthenticationException $exception) 
{ 
    if ($request->expectsJson()) { 
     return response()->json(['error' => 'Unauthenticated.'], 401); 
    } 

    return redirect()->guest('login'); 
} 

因此,当用户没有通过验证,并打与auth中间件路由,它应该重定向到/登录。

这适用于本地和开发服务器。但在生产服务器中,它永远不会被调用。我试图在renderunauthenticated函数中尝试dd(),但它从未被调用过。 因此,在生产服务器上,如果未经身份验证的用户使用auth中间件命中路由,它将始终重定向到/ auth而不是/ login。

你对这个问题有什么经验吗? 谢谢

回答

0

你应该尽量不要修改核心处理器,

你的路由文件不应该在这种情况下使用嵌套路由。

下面是上述

Route::group(['middleware' => ['web']], function() { 

}); 

Route::group(['middleware' => ['auth']], function() { 
    Route::get('personal', 'Web\[email protected]'); 
}); 

Route::group(['middleware' => ['web', 'auth']], function() { 
    Route::get('personal', 'Web\[email protected]'); 
}); 
+0

感谢您回应一些例子,适当web.php路线。但不幸的是它不起作用。结果是一样的。此外,我没有编辑核心处理程序,它在应用程序文件夹下,并且可以安全地在那里编辑未经身份验证的重定向。 我不认为它与路由有关,因为它适用于本地和开发服务器。 – Destiya

相关问题