私は lighthouse-php を使用してgraphql APIを作成していますが、ガードするミドルウェア(新しいバージョンでは非推奨になります)ディレクティブを変更するのに問題があります。
extend type Query @middleware(checks: ["auth:api"]) {
task(id: ID @eq): Task @can(ability: "view" find:"id") @find
mytasks: [Task!]!
}
このコードを使用するとうまくいきます。つまり、システムはユーザーがログに記録されているかどうかをチェックし、ユーザーがタスクにアクセスできるかどうかをポリシーと照合しますが、@middleware
ディレクティブを@guard
ディレクティブに変更しようとすると、次のようになります。
extend type Query @guard(with: ["api"]){
task(id: ID @eq): Task @can(ability: "view" find:"id") @find
mytasks: [Task!]!
}
ユーザーが認証されていないことを常に返します。ただし、最後のケースで @can ディレクティブを削除すると、システムはユーザーがログに記録されているかどうかを確認します (ただし、ユーザーが指定されたタスクにアクセスできるかどうかをポリシーに対して確認する必要があります)。
私はこれらのバージョンのパッケージを使用しています:
"joselfonseca/lighthouse-graphql-passport-auth": "^3.0",
"laravel/framework": "^6.2",
"laravel/passport": "^8.2",
"laravel/tinker": "^2.0",
"mll-lab/laravel-graphql-playground": "^2.0",
"nuwave/lighthouse": "^4.8"
誰かがこの問題を経験しましたか? ありがとう。