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は存在しません
次のコマンドを実行しましたが、成功しませんでした
composer dump-autoload
php artisan clear-compiled
php artisan optimize
どんな助けでも大歓迎です。前もって感謝します。
まず、名前空間を確認します。
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);
}