身份验证
|
这是 GraphQL Library 7 版本的文档。对于长期支持 (LTS) 版本 5,请参考 GraphQL Library 5 LTS 版本。 |
GraphQL 库提供了 @authentication 指令,用于为特定操作和模式的不同部分配置身份验证。
|
使用 |
操作
可以将身份验证配置为仅在特定操作上进行验证
-
CREATE -
读取 (READ) -
AGGREGATE -
UPDATE -
DELETE -
CREATE_RELATIONSHIP -
DELETE_RELATIONSHIP -
SUBSCRIBE
例如,只对用户的更新或删除操作要求身份验证
type User @authentication(operations: [UPDATE, DELETE]) @node {
id: ID!
name: String!
password: String!
}
|
如果没有提供包含操作列表的 |
范围
全局身份验证
身份验证可以应用于整个模式。这可确保对每个匹配的请求都进行身份验证检查。
扩展模式
extend schema @authentication
在指令应用于模式扩展时,也可以使用 operations 和 jwt 参数,例如
extend schema @authentication(operations: [UPDATE, DELETE], jwt: { roles_INCLUDES: "admin" })
类型的身份验证
可以为整个类型配置身份验证
type User @authentication @node {
id: ID!
name: String!
password: String!
}
在此配置下,当尝试以下任意操作时都会进行身份验证验证
-
创建:
createUsers变更,或通过关联类型的create嵌套操作。 -
读取:
users、usersConnection、aggregate查询,或通过关联类型访问。 -
更新:
updateUsers变更或通过关联类型的update嵌套操作。 -
删除:
deleteUsers变更或通过关联类型的delete嵌套操作。 -
创建关系: 通过关联类型的
connect嵌套操作。 -
删除关系: 通过关联类型的
disconnect嵌套操作。 -
订阅: 所有与类型
User相关的订阅操作。