web-dev-qa-db-ja.com

ReflectionException-ミドルウェアクラスが存在しないLaravel 5.2

Laravel 5.2、ドキュメントに従って Stateless HTTP Basic Authentication )でステートレスHTTP基本認証を使用してAPIを構築しています。次のミドルウェアを作成しました

app/Http/Middleware/AuthenticateOnceWithBasicAuth.php

<?php

namespace Illuminate\Auth\Middleware;

use Auth;
use Closure;

class AuthenticateOnceWithBasicAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request, Closure $next)
    {
        return Auth::onceBasic() ?: $next($request);

    }

}

そしてそれをKernel.phpに登録しました

app/Http/kernel.php

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'auth.basic.once' => \App\Http\Middleware\AuthenticateOnceWithBasicAuth::class,
];

次のようなルートで使用しています

Route::group(['prefix' => 'admin', 'middleware' => 'auth.basic.once'], function () {

Route::get('service/create', function ()    {
    return response()->json(['name' => 'Abigail', 'state' => 'CA'], 200);
});

});

しかし、それは私に与えています

Container.php行734のReflectionException:クラスApp\Http\Middleware\AuthenticateOnceWithBasicAuthは存在しません

enter image description here

次のコマンドを実行しましたが、成功しませんでした

composer dump-autoload
php artisan clear-compiled
php artisan optimize 

どんな助けでも大歓迎です。前もって感謝します。

6
Devendra Verma

まず、名前空間を確認します。

namespace Illuminate\Auth\Middleware;

名前を次のように変更する必要があります。

namespace App\Http\Middleware;

ミドルウェアでは、次のようにする必要があります。

public function handle($request, Closure $next) {
   if (!Auth::onceBasic()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('login');
        }
    }

    return $next($request);
}
8