2017-05-05 154 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.不要忘记导入类或写入中间件的完整路径。