如果控制器通过app('App\Http\Controllers\SubController')->SubControllerFunction()执行,则Laravel中间件规则不起作用

b4wnujal  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(60)

在我的Laravel 9项目中,我有主控制器->HomeController
HomeController中,我有几个函数可以调用其他控制器:

class HomeController extends Controller
{
    public function callSubController()
    {   
        app('App\Http\Controllers\SubController')->SubControllerFunction();
    } 
}

字符串
在我的SubController中,我想在__construct函数中添加中间件规则SubControllerMiddleware,但它不起作用。

class SubController extends Controller
{   

  public function __construct()
    {   
        $this->middleware(['auth', 'SubControllerMiddleware']);
        
    }    
}


有没有办法在SubController内部调用中间件?

72qzrwbm

72qzrwbm1#

要解决此问题,请执行以下步骤:1-在
app/Http/Kernel.php
中间件可以是全局的,也可以是特定于您的控制器或路由的。

// Example middleware definition
protected $routeMiddleware = [
    'customMiddleware' => \App\Http\Middleware\CustomMiddleware::class,
];

字符串
2-在控制器内部使用它

// Apply the middleware to this method
        $this->middleware('customMiddleware');

相关问题