GraphQL 中间件
根据 GraphQL 的授权指南,授权应该集中在同一处——位于 GraphQL 层与你的 resolver 之间。可以在 resolver 中(或一个薄封装中)使用 Casbin,对类型、字段或操作进行访问控制。
// Casbin authorization logic lives inside postRepository
var postRepository = require('postRepository');
var postType = new GraphQLObjectType({
name: 'Post',
fields: {
body: {
type: GraphQLString,
resolve: (post, args, context, { rootValue }) => {
return postRepository.getBody(context.user, post);
}
}
}
});
可用的 GraphQL 中间件
可用的 Casbin GraphQL 集成:
| 中间件 | GraphQL 实现 | 作者 | 说明 |
|---|---|---|---|
| graphql-authz | graphql | Casbin | 适用于 graphql-go 的授权中间件 |
| graphql-casbin | graphql | @esmaeilpour | GraphQL 与 Casbin 的集成示例 |
| gqlgen_casbin_RBAC_example | gqlgen | @WenyXu | (空) |
| 中间件 | GraphQL 实现 | 作者 | 说明 |
|---|---|---|---|
| graphql-authz | GraphQL.js | Casbin | 适用于 GraphQL.js 的 Casbin 授权中间件 |
| 中间件 | GraphQL 实现 | 作者 | 说明 |
|---|---|---|---|
| graphql-authz | GraphQL-core 3 | @Checho3388 | 适用于 GraphQL-core 3 的 Casbin 授权中间件 |