Обеспечение прав доступа - недостаток AuthDirective

Я последовал и использовал AuthDirective, найденный на https://www.apollographql.com/docs/apollo-server/schema/creating-directives/.

Он хорошо работает с запросами и мутациями. Однако я не понимаю утверждение "Один из недостатков этого подхода заключается в том, что он не гарантирует, что поля будут заключены в оболочку, если они будут добавлены в схему после применения AuthDirective", которое можно найти в конце раздела "Обеспечение разрешений доступа". Каким образом поля будут добавлены в схему после применения AuthDirective? Речь идет о результатах, возвращаемых из поля, к которому был применен AuthDirective?

1 ответ

Решение

Если @authПоказанная директива применяется к типу, к этому типу также может быть применена другая директива, которая добавляет поля к типу. Например, представьте себе@id директива, добавившая idк любому типу, к которому оно было применено. Если@idДиректива применяется после@auth директива, id преобразователь поля никогда не будет изменен @authдиректива, как и все остальные поля. Директивы применяются в том порядке, в котором они появляются в определении типа, поэтому избежать этого сценария достаточно легко, но об этом следует помнить, если вы широко используете директивы.

Другие вопросы по тегам