Authentication 中继器中的认证&;图形ql

Authentication 中继器中的认证&;图形ql,authentication,passport.js,jwt,relayjs,graphql-js,Authentication,Passport.js,Jwt,Relayjs,Graphql Js,我一直在使用react和relay开发一个应用程序,现在我一直在实现身份验证 我知道您可以通过graphql解析函数中可用的上下文将值传递给每个graphql请求 我更为困惑的是,该把它当作什么以及如何去做 使用JSON Web令牌、passport或其他东西是否更好?我应该如何为用户传递标识符 基本上就是我要问的, 什么最适合接力:jwt、passport或其他?以及如何连接继电器。谢谢 我认为你最好的选择是学习一些入门工具。不幸的是,这些工具包中几乎没有一个提供完整的JWT实现——其中许多似

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

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

我更为困惑的是,该把它当作什么以及如何去做

使用JSON Web令牌、passport或其他东西是否更好?我应该如何为用户传递标识符

基本上就是我要问的,
什么最适合接力:jwt、passport或其他?以及如何连接继电器。谢谢

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

退房:

  • 。您的里程可能会有所不同-它涵盖了整个概念,但有一些缺陷
  • 。这是一个相当惊人和完整,但是一个野兽,可以有点压倒性的工作,因为它还包括iOS/Android应用程序创建
  • 。在编写本文时,它只有FB auth设置(因此没有正常的登录表单),通过它可以设置JWT cookie。我相信,将他们所有的登录路径迁移到GraphQL已经在路线图上了,因为现在它有点混合
至于你的jwt/护照问题。它们不是相互排斥的。Passport可以处理jwt身份验证,但我个人不使用它,直接使用jwt库。这不是很难做到-你可以在继电器启动器套件的文件中看到它


JWT令牌通常在头文件中传递,但是已经转向将这些令牌存储在HttpOnly Cookie中(见此)。这种方法的优点是,您不需要处理通过中继传递令牌的问题。

我是cyberwombats答案中第一个示例的作者,目前正在开发一种新的方法。它包括了通过AWS Cognito的身份验证,还有一个通过Cognito的FB登录,尽管它很简单。它使用Cognito发行的JWT令牌

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


初学者工具包仍在开发中(例如,尚未使用刷新令牌),但它已经可以使用了。

jwt和passport不是互斥的,这是什么意思?它们现在是两种不同的用户身份验证方法吗?为什么我要同时使用这两种身份验证工具?Passport是一种通用的身份验证工具,它有插件来处理本地身份验证(标准用户名/密码,可能是您提到Passport时所指的)、facebook、jwt等等。它没有规定具体的方法。它非常方便,尤其是在处理FB/twitter身份验证的更复杂场景时。但是,如果您愿意,所有这些身份验证方法,包括jwt,都可以在不使用passport的情况下处理。出于某种原因,我将passport与基于会话的身份验证混合在一起,因此我不明白它与基于令牌的身份验证(如jwt)有什么关系,谢谢!此外,这里还有一个关于SO的类似讨论:谢谢,你太棒了:)我们使用Auth0的体验非常好-设置或多或少都很琐碎。