2015-11-10 105 views
0

我爲我的項目使用Laravel 5.1。我試圖確保路線,並確保只有登錄的用戶才能訪問某些路線。我意識到中間件,但我想知道是否有人發佈了一個示例或鏈接來解釋中間件以及如何使用中間件來保護頁面。在Laravel 5.1保護路線

謝謝

+2

Hi Sajan!歡迎來到Stack Overflow(SO)!要提出有幫助的問題,重要的是它們是特定的,定義明確的,並且感謝(並期望)呈現迄今爲止嘗試過的內容。此外,請花點時間參加[Tour](http://stackoverflow.com/tour),它將幫助您掌握一切。你也會得到一個徽章;) –

回答

1

要基於Joe Rose給出的答案,您也可以在您的控制器中指定中間件,而不是在您的routes.php文件中。

例如,你可以讓你的路由設置出像

Route::get('/example', '[email protected]'); 
Route::post('/example/post', '[email protected]'); 
Route::resource('blog', 'BlogController'); 

然後你的控制器內引用它,像這樣:

class ExampleController extends Controller 
{ 
    public function __construct() 
     { 
      $this->middleware('auth'); 
     } 
    //.... 

如果您正在尋找更多的信息,請查看鏈接Joe給出的文檔,以及this blog post,它解釋了什麼是中間件,以及如何根據需要創建自己的內容。

+0

感謝您的回答。你有一個例子來說明如何在Authenticate中間件中實現句柄功能。我對那部分感到困惑。 –

+1

@SajanSilwal默認情況下,Laravel在Middleware文件夾(app/Http/Middleware)中提供'Authenticate.php'。 句柄方法使用這一行if($ this-> auth-> guest())檢查用戶是否是guest(即未登錄),然後檢查請求是否是ajax請求,if它是它返回一個401請求的未經授權的消息,用這行'if($ request-> ajax())',否則它將它們返回到帶有'else {return redirect() - > guest('auth /登錄'); }' 否則,如果您已登錄,那麼您的客人支票將失敗,並且您的請求將照常進行。 – James

1

你對使用中間件是正確的。包含的Auth中間件是你應該使用的,只要你還使用包含的Auth控制器來認證用戶。你會寫你的路線是這樣的:

Route::get('/page', array(
    'uses' => '[email protected]', 
    'middleware'=>'auth' 
)); 

(上面的例子是使用GET要求,但也可能其他請求類型,就像POST爲例)。

這將使用中間件的缺省行爲來檢查用戶是否已登錄(已通過身份驗證)。您還可以擴展或覆蓋內置函數,以便您可以指導應用程序發送用戶的位置,如果他們是或未登錄等。Laravel的官方文檔是一個很好的起點:link