2017-05-05 152 views
1

如標題所示,我想在控制器功能中使用中間件。我有資源控制器,其內部的功能將有不同的訪問權限,所以我不能在web.php文件中使用中間件,我必須在每個功能中單獨使用或應用它來限制訪問,我的谷歌搜索沒有成功地獲得迄今爲止的解決方案。任何幫助,請提前致謝。Laravel在控制器功能中添加中間件

P.S.我相信這裏沒有必要的代碼。

回答

3

中間件也可以應用到只有一個功能,只需在你的控制器構造

public function __construct() 
{ 
    // Middleware only applied to these methods 
    $this->middleware('loggedIn', ['only' => [ 
     'update' // Could add bunch of more methods too 
    ]]); 
} 

這裏添加方法名是在documentation

+1

謝謝你,那是一個巨大的重量我的肩膀,#notallheroeswearcapes – lulliezy

+2

也許因爲披肩很貴! – linktoahref

0

在控制器構造函數中使用以下代碼。下面的代碼將使用AUTH中間件:

public function __construct() { 
    $this->middleware('auth'); 
} 
+0

但這將適用於整個控制器的中間件權利? – lulliezy

+0

是的,這是一個問題嗎? –

+0

這不是問題,但在我的情況下,這不是我想要的,控制器有很多功能,我不希望中間件應用於整個控制器,而只是用於更新功能 – lulliezy

0

您也可以簡單地在您的路線添加中間件。例如,我需要添加中間件爲我的方法「registration_fee()」內「RegisterController」,所以它會看起來像這樣:

Route::get('/pay_register_fee', 'Auth\[email protected]_fee') 
->name('pay_register_fee')->middleware(['guest', Register::class, RegistrationFee::class]); 

「RegistrationFee」是中間件,我想補充。
P.S.不要忘記導入類或寫入中間件的完整路徑。