2015-12-02 19 views
1

我試圖在全局中使用Authenticate中間件,除了auth/loginauth/logout,所以我不需要將它添加到每個控制器中。我將它添加到全球中間件列表Kernel(如下所示);然而,它陷入了無限的auth/login重定向。對於任何客人,我希望網頁被重定向到auth/login並留在那裏。Laravel 5.1:全局使用默認的Auth中間件

class Kernel extends HttpKernel 
{ 
    protected $middleware = [ 
     ... 
     \App\Http\Middleware\Authenticate::class, 
    ]; 
} 

它的發生,因爲當它擊中auth/login第一次,全球Authenticate踢又一遍地重定向到auth/login一次。

是否可以使用全球爲我所描述的默認Authenticate中間件?我需要爲它創建一個新的中間件嗎?

編輯:我已經得出結論,托馬斯的方法是夠好的。

回答

3

您可以隨時使用Route Groups。在你routes.php文件...

// Your login/logout routes 
Route::get('login', 'Auth\[email protected]'); 
Route::post('login', 'Auth\[email protected]'); 
Route::get('logout', 'Auth\[email protected]'); 

Route::group(['middleware' => 'auth'], function() { 
    // Put all other routes here and the auth middleware will be applied on them all 
}); 

編輯:此外,你不需要到Authenticate中間件添加到全局中間件堆棧。只要將其保留在默認的$routeMiddleware即可。

'auth' => \App\Http\Middleware\Authenticate::class, 
+0

如果使用重路由分組,不需要列出單個路由嗎?我正在尋找一種極簡方式來分配auth中間件。 – musicliftsme

+0

你是什麼意思?無論如何,您必須列出您的路線..您將添加兩行代碼,以在除登錄/註銷路線之外的所有路線上應用auth中間件。 –

+0

我的意思是如果我的索引控制器有X個路由,我需要列出分組的X條目,不是嗎?我可以在控制器中添加中間件來處理這一行。 – musicliftsme

相關問題