javascript - 如何在使用 GraphQl 和 Node.js 时验证用户电子邮件

标签 javascript node.js graphql email-verification

我正在尝试使用 GraphQL 和 Node.js 在我的宠物项目中实现用户电子邮件验证。

我已经有了发送验证 token 的注册解析器,但我刚刚了解到,当用户单击链接时,无法将数据从电子邮件发送到下一个使用 token 并验证电子邮件的 GraphQL 解析器。

所以问题是:我应该让 REST 端点 /verify 来完成工作,还是有办法使用 /graphql 端点

最佳答案

如果您使用单独的 /verify 端点,您很可能还希望在处理请求后将用户重定向回您的网站。一种方法是有效地逆转此流程,链接到您的网站,然后让您的页面发出必要的 GraphQL 请求。

或者,您可以通过电子邮件中的链接调用您的verify解析器。 express-graphql 将处理 POSTGET 请求。不过,使用这种方法需要记住以下几点:

  • 它仅适用于查询,因此您的“验证”字段需要位于查询类型
  • 该请求将在浏览器上下文中运行,但如果您从内部调用它,例如 GraphiQL,则会失败

这是一个基本示例:

const typeDefs = `
  type Query {
    verify: Boolean # Can be any nullable scalar
  }
`
const resolvers = {
  Query: {
    verify: (root, args, ctx) => {
      // Your verification logic
      ctx.res.redirect('https://www.google.com')
    }
  }
}
const schema = makeExecutableSchema({ typeDefs, resolvers })

app.use('/graphql', graphqlHTTP((req, res) => ({
  schema: MyGraphQLSchema,
  graphiql: false,
  // Inject the response object into the context
  context: { req, res },
})))

app.listen(4000)

然后您可以在浏览器中导航到此网址:

http://localhost:4000/graphql?query={verify}

关于javascript - 如何在使用 GraphQl 和 Node.js 时验证用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530949/

相关文章:

javascript - 如何更改 webpack 模块导出需要字符串?

javascript - 上次重置前的请求数

Javascript 原型(prototype)不工作 - MongoDB 游标

react-native - 从 GraphQL 查询中选择随机 N 条记录

javascript - 如何将绘制的特征添加到现有特征组并将整个特征输出为geojson?

javascript - 下载文件时在 Play Framework 中获取操作未找到错误?

javascript - node js中的模块化编程

node.js - 是否可以看到与 socket.io 捆绑在一起的 redis 模块内部

javascript - 如何使用 GraphQL 查询返回目录中的文件列表?

sql - 在 SQL 表中有一个专用的计数字段是否可取?