标题说我想在控制器功能中使用中间件。我有资源控制器,其内部的功能将具有不同的访问权限,所以我不能在web.php文件中使用中间件,我必须在每个函数中单独使用或应用它来限制访问,我的谷歌搜索还没有到目前为止成功地获得了解决方案。请提供任何帮助,并提前致谢。
P.S。我相信这里不需要代码。
答案 0 :(得分:4)
中间件也可以只应用于一个函数,只需在控制器构造函数中添加方法名称
public function __construct()
{
// Middleware only applied to these methods
$this->middleware('loggedIn', ['only' => [
'update' // Could add bunch of more methods too
]]);
}
答案 1 :(得分:1)
在控制器构造函数中使用以下代码。以下代码将使用 auth 中间件:
public function __construct() {
$this->middleware('auth');
}
答案 2 :(得分:0)
此外,您只需在路线中添加中间件即可。例如,我需要为“RegisterController”中的方法“registration_fee()”添加中间件,所以它看起来像这样:
Route::get('/pay_register_fee', 'Auth\RegisterController@registration_fee')
->name('pay_register_fee')->middleware(['guest', Register::class, RegistrationFee::class]);
“RegistrationFee”是我要添加的中间件 附:不要忘记导入类或写入中间件的完整路径。
答案 3 :(得分:0)
有 3种在控制器内部使用中间件的方法:
1)保护所有功能:
public function __construct()
{
$this->middleware('auth');
}
2)仅保护某些功能:
public function __construct()
{
$this->middleware('auth')->only(['functionName1', 'functionName2']);
}
3)保护除某些功能以外的所有功能:
public function __construct()
{
$this->middleware('auth')->except(['functionName1', 'functionName2']);
}
在这里您可以找到有关该主题的所有文档:Controllers
我希望这对您有所帮助!