Обеспечение прав доступа - недостаток AuthDirective
Я последовал и использовал AuthDirective, найденный на https://www.apollographql.com/docs/apollo-server/schema/creating-directives/.
Он хорошо работает с запросами и мутациями. Однако я не понимаю утверждение "Один из недостатков этого подхода заключается в том, что он не гарантирует, что поля будут заключены в оболочку, если они будут добавлены в схему после применения AuthDirective", которое можно найти в конце раздела "Обеспечение разрешений доступа". Каким образом поля будут добавлены в схему после применения AuthDirective? Речь идет о результатах, возвращаемых из поля, к которому был применен AuthDirective?
1 ответ
Если @auth
Показанная директива применяется к типу, к этому типу также может быть применена другая директива, которая добавляет поля к типу. Например, представьте себе@id
директива, добавившая id
к любому типу, к которому оно было применено. Если@id
Директива применяется после@auth
директива, id
преобразователь поля никогда не будет изменен @auth
директива, как и все остальные поля. Директивы применяются в том порядке, в котором они появляются в определении типа, поэтому избежать этого сценария достаточно легко, но об этом следует помнить, если вы широко используете директивы.