2016-06-01 13 views
4

I in Laravel 5.2 eine API mit staatenlos HTTP-Basisauthentifizierung am Aufbau, wie pro Dokumentation Stateless HTTP Basic Authentication, ich habe folgende Middleware erstelltReflection - Middleware-Klasse existiert nicht Laravel 5.2

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

    } 

} 

Und dann registriert es 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, 
]; 

ich es in Weg bin mit wie folgt

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

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

}); 

Aber es gibt mir

Reflection in Container.php Linie 734: Klasse App \ Http \ Middleware \ AuthenticateOnceWithBasicAuth existiert nicht

enter image description here

ich habe folgende Befehle ausführen, aber ohne Erfolg

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

Jede Hilfe würde sehr geschätzt werden. Danke im Voraus.

+0

namespace Illuminate\Auth\Middleware; 

Sie es umbenennen sollte Führen Sie im Terminal "composer dump-auto" und "php artisan clear-compiled" aus. Das sollte es beheben. – IllegalPigeon

+1

@IllegalPigeon Haben es bereits versucht –

Antwort

5

Nun zunächst einmal Blick auf die Namespaces:

namespace App\Http\Middleware; 

in der Middleware benötigen Sie so etwas wie dies zu tun:

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); 
} 
+0

In diesem Fall erstellt es ein Cookie Laravel_session und XSRF-TOKEN. Das ist dasselbe wie die Verwendung von Basic Auth. –

+0

ich bin mir nicht sicher, was Sie bekommen sollten, aber ich denke vielleicht: return 'Auth :: onceBasic()? $ request: $ next ($ request); 'versuchen Sie es mit der' $ request' Rückgabe erfolgreich. –

+0

Ich möchte die HTTP-Basisauthentifizierung implementieren, ohne ein Benutzerkennungs-Cookie in der Sitzung zu setzen. –