4

我一直在使用 react 和 relay 开发一个应用程序,现在我一直在实施身份验证。

我知道您可以通过 GraphQL 解析函数中可用的上下文将值传递给每个 graphql 请求。

我对传递什么以及如何传递更加困惑。

使用 JSON Web 令牌、护照或其他东西会更好吗?我应该如何为用户传递标识符?

基本上我要问的是,什么最适合中继:jwt,护照,其他什么?以及如何将其与继电器连接起来。谢谢!

4

2 回答 2

4

我认为你最好的选择是学习一些入门工具包。不幸的是,这些工具包几乎都没有提供完整的 JWT 实现——其中许多似乎只完成了一半。

查看:

  • 中继认证。您的里程可能会有所不同 - 它涵盖了整个概念,但有一些错误。
  • 通用继电器样板。那是相当惊人和完整的,但它是一头野兽,工作起来可能有点不知所措,因为它还包括 iOS/Android 应用程序的创建。
  • 继电器入门套件。在撰写本文时,它只有 FB auth 设置(因此没有正常的登录表单),它确实设置了一个 JWT cookie。我相信将他们所有的登录路由迁移到 GraphQL 是在路线图上,因为现在它有点混合。

至于你的 jwt/passport 问题。它们不是相互排斥的。Passport 可以处理 jwt 身份验证,尽管我个人不使用它并直接使用 jwt 库。这并不难 - 您可以在 Relay Starter Kit的服务器文件中看到它。

JWT 令牌通常在标头周围传递,但是已经转向将这些令牌存储在HttpOnly cookie 中(请参阅本文)。该方法的好处是您不需要处理通过 Relay 传递令牌的问题。

于 2016-07-27T17:44:05.523 回答
1

我是cyberwombats answer中第一个示例的作者,目前正在开发一个新的通用继电器入门套件。它包含通过 AWS Cognito 进行的身份验证,并且通过 Cognito 进行了 FB 登录,尽管它还没有完全工作。它使用 Cognito 发行的 JWT 令牌。

如果您需要自己实施身份验证工作流程而不是使用 Cognito 或 Auth0 或类似服务,则 Passport 也可能是一种替代方案。您可以实现一个(单独的)身份验证服务器,公开身份验证端点,例如登录等。该服务器可以在 cookie 中设置 JWT,该 cookie 可用于 GraphQL 服务器进行身份验证。

入门工具包仍在开发中(例如,尚未使用刷新令牌),但它已经有点可用了。

于 2017-10-31T18:21:25.983 回答