Laravel的中间件无法在控制器上运行

xzabzqsa  于 2023-01-31  发布在  其他
关注(0)|答案(4)|浏览(143)

我有一个名为“AdminMiddleware”的中间件,它在类的构造函数中使用。由于某种原因,虽然构造函数正在运行,但没有从构造函数调用中间件。我尝试在adminMiddleware文件上执行一个die转储,但它似乎忽略了此文件。

namespace App\Http\Controllers\SuperAdmin;

    use Illuminate\Http\Request;

    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Auth;

        class dashboard extends Controller
        {
            protected $user;

            public function __construct()
                {
                    $this->middleware('admin');
                    $this->user = Auth::User();
                }

//Kernel.php
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
        'admin' => \App\Http\Middleware\AdminMiddleware::class,
    ];

对于一些项目的需求,我不能直接使用中间件的路线。任何帮助是感谢,我正在使用laravel 5.1。

llycmphe

llycmphe1#

我遇到了同样的问题,显然路由缓存也缓存中间件。
所以php artisan route:clear在我的情况下解决了它。

ru9i0ody

ru9i0ody2#

要在控制器中启用中间件,您需要做两件事:
1.在$routeMiddleware中注册中间件在您的应用程序\Http\Kernel.php中
protected $routeMiddleware = [ '管理员' =〉'应用程序\HTTP\中间件\管理员中间件',];
1.在控制器中启用中间件,使用中间件的密钥,而不是类名:
$this-〉中间件('admin');

yzxexxkh

yzxexxkh3#

我有同样的问题,并解决它的 composer 转储-自动加载。我的问题是改变文件名,而不是重新生成自动加载。我希望它为您工作。

w3nuxt5m

w3nuxt5m4#

使用Laravel框架9.46.0对我来说也不起作用,关键字'admin',将其更改为'administrator'或'admin.only'工作。就像'admin'是一个保留字。

相关问题