我使用子图上的graphql-shield和rover-cli来生成模式。
我将回退规则设置为拒绝所有内容,因为我不希望默认情况下可以访问任何内容。但是现在rover-cli在内省子图时失败了。我知道您可以将令牌传递给漫游者,但我在构建过程中无法这样做。
我已经看过这个问题了:Apollo Server Federation with graphql-shield和graphql-shield & rover GitHub存储库,但是到目前为止还没有。
我还试图像这样显式地添加SubgraphIntrospectQuery:
export const permissions = shield(
{
Query: {
SubgraphIntrospectQuery: allow,
},
},
{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
}
);谢谢你的帮忙!
发布于 2022-03-02 12:46:09
试试这个:
export const permissions = shield({
Query: {
_service: allow,
},
_Service: {
sdl: allow
}
},{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
});这似乎是阿波罗在进行内省时所使用的。您可能还需要允许:"Query._entities“、"Query._service”、"_Entity.*“、"_Service.*”、"_Any.*“,因为阿波罗也使用它们。
您可能应该实现某种形式的安全,而不是使用“允许”这些,但我希望这回答您的问题.
https://stackoverflow.com/questions/70967730
复制相似问题