問題タブ [laravel-lighthouse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - 複雑な Laravel、Graphql、Lighhouse の実装
私の質問は、複雑なカスタム リゾルバーを構築する方法と、それらが組み込みのリゾルバーとうまく連携しない理由に関するものです。複雑なリゾルバーに関する良い例を見つけることができず、実際のケースはこの例よりもさらに複雑です。
次のスキーマがあります
たとえば、このクエリがあります
ビジネスロジックのためにカスタムリゾルバーが必要ですが、すべてではありません。上記は機能します(すべてのカスタムリゾルバーを意図的に使用しています。少し説明します)が、正しく呼び出される最初のリゾルバーで雄弁なクエリを作成した場合のみです。そのようです
カスタムリゾルバーから始めたが、クエリ内の何かが組み込みのリゾルバーを使用している場合、たとえば、
に
その後も正常に動作しますが、N+1 の問題が発生します。そのため、MySQL ログで、複数のクエリが突然実行されていることがわかります。これは、カスタムのみ、または組み込みのリゾルバーのみを使用している場合には発生しません。カスタム リゾルバーに組み込みリゾルバーを呼び出させるのは悪い習慣ですか?
私のすべてのタイプのカスタムリゾルバーに固執するのが最善ですか? そして、カスタムリゾルバーを構築する私のアプローチは正しい方法ですか? (パブリック関数 fetchAll コードニペットを参照)
laravel - Laravel Lighthouse GraphQL:トークンがリクエストヘッダーに存在してもパスポート認証が機能しない
私はLaravelプロジェクトに取り組んでいます。Lighthouse ライブラリを使用して GraphQL API を構築しています。このライブラリを Passport 認証に使用しています https://github.com/joselfonseca/lighthouse-graphql-passport-auth。そのライブラリからエンドポイントを使用して、認証アクセス トークンを生成できます。事前に Passport をインストールして構成しました。問題は、エンドポイントを消費したり、保護されているミューテーションをクエリしたりすると、機能しないことです。トークンがヘッダーに存在する場合でも、ユーザーがログインしているかどうかを確認するために常に false を返します。
次のスキーマ宣言があります。
ご覧のとおり、これは文字通り「api」および「auth.restaurant-admin」ミドルウェアによって保護されたミューテーションです。
以下は私の auth.restaurant-admin ミドルウェアの実装です。
auth()->check()
ヘッダーに有効なアクセス トークンが存在する場合でも、メソッドは常に false を返します。GraphQL プレイグラウンドで次のようにトークンを渡します。
$request->header('Authorization') のようにヘッダーからトークンを取得すると、期待値が表示されます。しかし、auth()->check() は機能しません。私のコードには何が間違っていて、何が欠けていますか? どうすれば修正できますか?