2017-04-10 38 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

相關問題