⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Schema Stitching 的私域字段隔离:权限与可见性控制

深入 GraphQL Schema Stitching 中的字段级权限,基于 federated schema 实现不同消费端(如管理员、普通用户)对同一服务的部分字段不可见。 · 难度:入门 · +10XP

Schema Stitching 的私域字段隔离:权限与可见性控制

在微服务架构中,Schema Stitching 往往将所有字段暴露给所有客户端,但业务要求某些字段仅对特权用户可见。本教程将教你使用 @graphql-tools/stitch 中的 delegation 与 transforms 技术,在缝合层动态移除或替换字段,而非在数据源修改。核心技巧是利用 'FilterObjectFields' transform 在运行时根据上下文(context.user.role)剥离私域字段,并配合自定义指令 @canSee 实现声明式权限控制。最后我们会构建一个网关,使得同一 schema 对 admin 和 guest 返回不同结构。

const { stitchSchemas } = require('@graphql-tools/stitch');
const { FilterObjectFields } = require('@graphql-tools/wrap');

const schema = stitchSchemas({ subschemas: [{ schema: userSchema, transforms: [ new FilterObjectFields((typeName, fieldName) => { // 对普通用户隐藏 email 字段 return typeName === 'User' && fieldName === 'email' ? false : true; }) ] }] });

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 147 篇
0 完成
🔥 0