Я использую lighthouse- php для создания API-интерфейса graphql, и у меня возникают проблемы при смене директивы промежуточного программного обеспечения (в новых версиях она устарела) для защиты.
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, система проверяет, вошел ли пользователь в систему или нет (но мне нужно проверить соответствие политике, если пользователь может получить доступ к указанной задаче).
I ' Я использую следующие версии пакетов:
"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"
Кто-нибудь экспериментировал с этой проблемой? спасибо.