私は、Laravel 5.5 + Passportを使用してRESTユーザーマイクロサービスを構築しています。 標準のPassport :: routes()を使用していますが、Auth ::ルートを修正してJSON応答を返させ、Passportで動作させる必要がありました。Laravel REST API - 無限ループ
私は私のルート/ web.phpファイルに次の行を追加しました:
Route::group(['middleware' => 'auth:api'], function() {
$this->post('logout', 'Auth\[email protected]')->name('logout');
});
これは=私は、ヘッダー「認可で電話をかける場合は、私はhttps://myapi/logout
- を投稿することができます>私は首尾よくログアウト応答を得る。
- 私はまったくのヘッダを提供しない場合、私はしかし、(良い)「認証されていません」というメッセージ
- を取得し、私が取り消されたトークンを使用してヘッダーを提供する場合、私は、関数の再帰的deadloopを取得:
Illuminate\Auth\RequestGuard->user()
(それは
これは、すべてのauth:api
ミドルウェアで行われているが、私のログアウトコードに達していない)、スタック・オーバーフローするまで、自分自身を再帰的に呼び出し続けるが、私のLoginControllerコンストラクタと呼ばれるです。コンストラクタコード:
public function __construct(Application $app)
{
$this->apiConsumer = $app->make('apiconsumer');
$this->middleware('guest')
->except('logout');
}
は、私はそれが私のこの問題の原因コード、またはLaravel +パスポート+認証のいくつかの組み合わせかどう理解するのに苦労しています。
私の最初の考えは、auth:apiミドルウェアがユーザーの認証に失敗し、その結果ユーザーが/ homeにリダイレクトされ、何らかの理由で再帰的にトリガーされたということでした。しかし、そうであれば、ヘッダーがないと正しく動作するのはなぜですか?
私の現在の考えは、問題のトークンはがデータベースに存在しますが、Laravelはそれが取り消されていることを理解していません。
感謝任意の提案、
あなたは 'Passport :: routes();'とタイプして 'boot()'メソッドの 'AuthServiceProvider.php'のドキュメントに記載されているように、ログアウトルートを削除して' passport'ルートを登録しようとしましたか? –
私はしていない、私は手動でauthログアウトメソッドを再実装するか? – mils