私はAPIルートを含むLaravel 5.3のAuth Scaffoldingを使ってみました。私はapiガードのためにセッションドライバを使用したかったのですが、明らかにこれは何の影響もありません。有効なユーザーでアプリケーションにログインした後(/login
から/home
に)、/api/user
というパスを入力しようとしましたが、常に/home
にリダイレクトされます。 RedirectIfAuthenticated
ミドルウェアは、ユーザーをリダイレクトします。Laravelセッションベースの認証:apiミドルウェアが動作しない
// In "app\Http\Middleware\RedirectIfAuthenticated.php"
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
$guard
がnullであり、真である場合/api/user
にブラウズ時:ここで
は、私が試したし、テストアプリケーションの概要ものです。
// In "config\auth.php"
'api' => [
'driver' => 'session', // changed from token to session
'provider' => 'users',
],
私は、apiガードのドライバをsession
に変更しました。
// In "app\Http\Kernel.php"
'api' => [
'throttle:60,1',
'bindings',
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
],
私はAPIのミドルウェアでクッキー
// In "routes\api.php"
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');
をサポートするためのミドルウェアを追加しましたこれは、新しいLaravelのインストールに付属している例です。
// In "app\Providers\RouteServiceProvider.php"
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
api
ミドルウェアはapi.php
ファイルで定義されたすべてのルートに適用されます。
私は、ユーザーがトークンを使用せずにログインした後に私のAPIを照会することができるようにしたい、など私はLaravel 5.2で書いたアプリは基本的に同じルートが、それに適用されるだけweb
ミドルウェアグループとauth
ミドルウェアを持っていました。 Laravel 5.3では、auth
ミドルウェアを追加すると、上記の問題が発生します。
編集:私の構成では、私は次のことを試してみました:
// In "routes\web.php"
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth']);
web
とapi
ガードがauth.php
の内側にまったく同じですが、これは完全に正常に動作しますが、これはしません。
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth:api']);
解決方法を見つけましたか? – Notflip
いいえ、私はauthを使用していますが、今のところapi Routeグループにあります。なぜそれが動作しないのか分からなかった... – Johannes
@Notflip fyi:http://stackoverflow.com/questions/40040226/route-not-found-after-adding-authapi-middleware-laravel-5-3 – Johannes