在 Laravel 的 __construct 中添加中间件到控制器

Moh*_*ndi -1 php laravel laravel-middleware laravel-6

我试图根据Laravel 文档在控制器的 __construct 中分配一个中间件,但它会引发以下错误:

BadMethodCallException
Method App\Http\Controllers\MyController::middlware does not exist.
Run Code Online (Sandbox Code Playgroud)

这是我的控制器类:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class MyController extends Controller
{

    public function __construct()
    {
        $this->middleware('myauth');
    }

    /** something */
    public function index()
    {
        return view('test.hi', ['name' => 'Moh']);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是中间件代码:

<?php

namespace App\Http\Middleware;

use Closure;

class myauth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        echo time().'<br>';
        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

Laravel 版本:6.5.2

我哪里做错了?

Din*_*Sah 9

中间件可以在控制器的构造函数中指定

public function __construct() {
    $this->middleware('auth');
}
Run Code Online (Sandbox Code Playgroud)

对于整个控制器:

$this->middleware('auth');
Run Code Online (Sandbox Code Playgroud)

仅针对特定操作:

$this->middleware('auth')->only('index');
Run Code Online (Sandbox Code Playgroud)

对于除特定操作之外的整个控制器:

$this->middleware('auth')->except('store');
Run Code Online (Sandbox Code Playgroud)