簡體   English   中英

ReflectionException: Class 不存在 - 中間件

[英]ReflectionException: Class does not exist - Middleware

我最近設置了一些新的中間件,作為我正在集成的權限系統的一部分。

我以前沒有問題地設置自定義中間件,並且相信我遵循了相同的過程,但是這次我為每個 controller 收到以下錯誤,我已將新中間件添加到:

Container.php 第 734 行中的 ReflectionException:Class App\Http\App\Http\Middleware\HasPermissionPermissions 不存在

我可以看到為什么它會出錯,因為該路徑不存在-但我無法理解它從哪里獲取該路徑...

這是我的中間件:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class HasPermissionPermissions
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::user()->hasPermissionTo('permissions'))
        {
            return $next($request);
        }
        else
        {
            flash()->error('You are not authorised to access this route.');
            return redirect('/');
        }
    }
}

我的 Kernel.php

/**
 * The application's route middleware.
 *
 * @var array
 */
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'application.status' => \App\Http\Middleware\ApplicationCheck::class,
    'email.confirmation.check' => \App\Http\Middleware\CheckIfConfirmed::class,
    'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'hasPermissionAnnouncements' => \App\Http\Middleware\HasPermissionAnnouncements::class,
    'hasPermissionGlobalLog' => \App\Http\Middleware\HasPermissionGlobalLog::class,
    'hasPermissionLaravelLog' => \App\Http\Middleware\HasPermissionLaravelLog::class,
    'hasPermissionPermissions' => \App\Http\Middleware\HasPermissionPermissions::class,
    'hasPermissionUsers' => \App\Http\Middleware\HasPermissionUsers::class,
];

最后,controller 我將其設置為:

class PermissionsController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('hasPermissionPermissions');
        $this->middleware('email.confirmation.check');
    }

如果我刪除$this->middleware('hasPermissionPermissions'); 它工作得很好,但我看不出我的設置有什么不同!

誰能看到我哪里出錯了?

這是一個很好的問題,這可能是一個簡單的想法,我想您已經做到了,但是您確定中間件確實位於中間件目錄中嗎?

親切的問候

當我在App\Http\Middleware\My::class之類的$routeMiddleware路徑中聲明時,我遇到了同樣的錯誤。 只需使用\App\Http\Middleware\My::class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM