ReflectionException – Middleware di classe non esiste Laravel 5.2

Sto costruendo un API con stateless autenticazione HTTP basic in Laravel 5.2, come per la documentazione Stateless l’Autenticazione di Base HTTP , ho creato il seguente Middleware

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);

    }

}

E poi registrato in 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,
];

Io la sto usando in un percorso come segue

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

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

});

Ma mi sta dando

ReflectionException in Container.php linea 734:
Classe App\Http\Middleware\AuthenticateOnceWithBasicAuth non esiste

ReflectionException - Middleware di classe non esiste Laravel 5.2

Ho eseguito i seguenti comandi, ma senza successo

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

Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo.

Nel terminale, eseguire “compositore dump-auto” e “php artigianale chiara-compilato”. Che dovrebbe risolvere il problema.
Hanno già provato

OriginaleL’autore Devendra Verma | 2016-06-01

One Reply
  1. 5

    Beh, prima di tutto guardare gli spazi dei nomi:

    namespace Illuminate\Auth\Middleware;
    

    dovresti rinominarlo:

    namespace App\Http\Middleware;
    

    nel middleware avete bisogno di fare qualcosa di simile a questo:

    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);
    }
    
    In quel caso si crea un cookie laravel_session e XSRF-TOKEN. Che è lo stesso che utilizza l’autenticazione base.
    non sono sicuro che si vogliono ottenere, ma penso che forse: ritorno Auth::onceBasic() ? $request : $next($request); provare con il $request ritorno di successo.
    Vorrei implementare l’Autenticazione di Base HTTP senza la creazione di un identificativo utente cookie di sessione
    ok ho rieditare la mia voce e aggiunto la soluzione per voi.

    OriginaleL’autore Filip Koblański

Lascia un commento