Laravel在控制器函数

时间:2017-05-05 12:17:33

标签: php laravel

标题说我想在控制器功能中使用中间件。我有资源控制器,其内部的功能将具有不同的访问权限,所以我不能在web.php文件中使用中间件,我必须在每个函数中单独使用或应用它来限制访问,我的谷歌搜索还没有到目前为止成功地获得了解决方案。请提供任何帮助,并提前致谢。

P.S。我相信这里不需要代码。

4 个答案:

答案 0 :(得分:4)

中间件也可以只应用于一个函数,只需在控制器构造函数中添加方法名称

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

这里是documentation

答案 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

我希望这对您有所帮助!