2017-03-09 132 views
0

我最近設置了一些新的中間件作爲我正在集成的權限系統的一部分。ReflectionException:類不存在 - 中間件

我以前設置的自定義中間件沒有問題,我相信我都遵循相同的過程,但是這一次我收到以下錯誤每個控制器我已經加入我的新中間件:在集裝箱

ReflectionException .PHP行734: 類應用程序\ HTTP \軟件\ HTTP \中間件\ 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, 
]; 

最後,控制器我在這一設置:

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

如果我刪除$this->middleware('hasPermissionPermissions');它完美的工作,但我不明白我是如何設置它的任何不同!

任何人都可以看到我要去哪裏錯了嗎?

+0

'作曲家轉儲autoload'會做 –

+0

@CerlinBoss我已經試過了和'作曲家轉儲自動加載-o' – James

+0

嘗試改變從'hasPermissionPermissions'中間件關鍵'hasPermission.permissions' ,看看是否有效。 – patricus

回答

0

這是一個很好的問題,這可能是一個簡單的想法,我認爲你已經這樣做了,但是你確定中間件是否真的放在中間件目錄中?

親切的問候

+0

我不能更確定的時候會出現這個錯誤。這絕對是。我用'php artisan make:middleware'創建它,以便將它放在正確的目錄中。我不明白它是如何得到不正確的文件路徑 - 因爲這實際上是我如何設置其他可以正常工作的中間件。 – James

+0

是不是假設是一個評論比答案? –

+0

是的,但我不能評論,因爲我目前在50的信譽評分下 – David

相關問題