将 Rover 与 graphql-shield 一起使用
Use Rover with graphql-shield
我在子图上使用 graphql-shield
并使用 rover-cli
生成架构。
我已将回退规则设置为拒绝所有内容,因为我不希望默认情况下可以访问任何内容。但是现在 rover-cli
在内省子图时失败了。我知道您可以将令牌传递给流动站,但我在构建过程中无法这样做。
我已经看过这个问题: 以及 graphql-shield
和 rover
GitHub 存储库,但到目前为止运气不好。
我也试过像这样显式添加 SubgraphIntrospectQuery
:
export const permissions = shield(
{
Query: {
SubgraphIntrospectQuery: allow,
},
},
{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
}
);
感谢您的帮助!
试试这个:
export const permissions = shield({
Query: {
_service: allow,
},
_Service: {
sdl: allow
}
},{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
});
这似乎是 Apollo 在执行内省时使用的。您可能还需要允许:“Query._entities”、“Query._service”、“_Entity.*”、“_Service.*”、“_Any.*”,因为这些也被 Apollo 使用。
您可能应该实施某种形式的安全措施而不是对这些使用“允许”,但我希望这能回答您的问题...
我在子图上使用 graphql-shield
并使用 rover-cli
生成架构。
我已将回退规则设置为拒绝所有内容,因为我不希望默认情况下可以访问任何内容。但是现在 rover-cli
在内省子图时失败了。我知道您可以将令牌传递给流动站,但我在构建过程中无法这样做。
我已经看过这个问题:graphql-shield
和 rover
GitHub 存储库,但到目前为止运气不好。
我也试过像这样显式添加 SubgraphIntrospectQuery
:
export const permissions = shield(
{
Query: {
SubgraphIntrospectQuery: allow,
},
},
{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
}
);
感谢您的帮助!
试试这个:
export const permissions = shield({
Query: {
_service: allow,
},
_Service: {
sdl: allow
}
},{
fallbackRule: deny,
debug: true,
allowExternalErrors: true,
});
这似乎是 Apollo 在执行内省时使用的。您可能还需要允许:“Query._entities”、“Query._service”、“_Entity.*”、“_Service.*”、“_Any.*”,因为这些也被 Apollo 使用。
您可能应该实施某种形式的安全措施而不是对这些使用“允许”,但我希望这能回答您的问题...