![](/img/trans.png)
[英]ReflectionException - Middleware class does not exist Laravel 5.5
[英]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.