简介
graphql-factory-passport 是一个基于 GraphQL 和 Passport 的认证授权库,它提供了一套高度可定制的 API,支持多种用户认证方式,例如 username/password、Google、Facebook、微信等。graphql-factory-passport 的实现依赖于 GraphQL、Passport 和 JWT。
安装
安装 npm 包:
npm install graphql-factory-passport
配置
为你的 GraphQL Schema 导入 graphql-factory-passport:
import { GqlInstance } from "graphql-factory"; import { GqlFactoryPassport } from "graphql-factory-passport"; const gql = new GqlInstance(); const gqlPassport = new GqlFactoryPassport(); gql.use(gqlPassport);
使用某种认证策略:
gqlPassport.use(strategy, new strategy(options, (payload, callback) => { User.findOne({ id: payload.sub }, (err, user) => { if (err) { return callback(err); } if (!user) { return callback(null, false); } return callback(null, user); }); }));
在 GraphQL Schema 中为你的字段添加认证:
type Query { securedField: String @isAuthenticated }
使用
注册用户:
mutation { register(username: "testuser", password: "testpassword") { token } }
登录用户:
mutation { login(username: "testuser", password: "testpassword") { token } }
访问需要认证的字段:
query { securedField }
示例代码:
-- -------------------- ---- ------- ------ ------- ---- ---------- ------ - ------------ - ---- ------------------------ ------ - ----------- - ---- ------------------ ------ - ------------------ - ---- --------------------------- ------ -------- ---- ----------- ------ - --------- - ---- -------------- ------ - ---------- - ---- --------------- ----- -------- - ---------------------------------- -------- ------------------ - ---------------- ----- ------------------- ---- -- -------- -- -------------------- --------- -- -------------- ------------ -- - ---------------------- ---------- ------ --------- ---------------- --- ----- --- - --- -------------- ----- ----------- - --- --------------------- ----- - --------- - - ---------- ---------------- ------ --- ------------ - ------------ ---------- --------------- ----------------------------------------- -- -- --- -- --------- -- - -------------------- ---- --- -- ----- ----- -- - -- ----- - ------ ------------- ------- - -- ------- - ------ -------------- ------- - ------ -------------- ------ --- - - -- --------------------- ----------------- ---- ---- - ---- --- --------- ------- - ---- ----- - --- ---- ---------------- - ---- -------- - ------------------ -------- --------- --------- ---- --------------- -------- --------- --------- ---- - --- ------------------ ------ - --- ------ ----- - ---- -- -- ----- -- --------- - ----- -------------- ----- - ----- ------- - --- ----------------- ----- --------------- ----- ----- - ---------- ---- ----------- -- ----------- ------ - ----- -- -- ----- ----------- - --------- -------- -- - ----- ---- - ----- -------------------- -------- --- -- ------- - ----- -------- ----- -- ---------- - -- ------ -------------------------------- - ----- ----- - ---------- ---- -------- -- ----------- ------ - ----- -- - ----- -------- ----- -- ---------- -- -- --- ----- --- - ---------- ----- ------------ - --- -------------- ------- ------------------- -------- -- --- -- -- - ----- ---- - -------- -- ----- ------ - ----- ---------- -- -- --- ------------------------------ --- --- ----- ---- - ----- ---------------- -- -- ------------ ------- ------- -- ----------------------- ---- -- ---- -------- - --
结论
graphql-factory-passport 是一个易于使用、高度可定制的认证授权库,它充分利用了 GraphQL 的灵活性和可扩展性。我们建议开发人员使用它来加快对 GraphQL API 实施认证授权的速度。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562ee81e8991b448e0a6a