我一直在使用 react 和 relay 开发一个应用程序,现在我一直在实施身份验证。
我知道您可以通过 GraphQL 解析函数中可用的上下文将值传递给每个 graphql 请求。
我对传递什么以及如何传递更加困惑。
使用 JSON Web 令牌、护照或其他东西会更好吗?我应该如何为用户传递标识符?
基本上我要问的是,什么最适合中继:jwt,护照,其他什么?以及如何将其与继电器连接起来。谢谢!
我一直在使用 react 和 relay 开发一个应用程序,现在我一直在实施身份验证。
我知道您可以通过 GraphQL 解析函数中可用的上下文将值传递给每个 graphql 请求。
我对传递什么以及如何传递更加困惑。
使用 JSON Web 令牌、护照或其他东西会更好吗?我应该如何为用户传递标识符?
基本上我要问的是,什么最适合中继:jwt,护照,其他什么?以及如何将其与继电器连接起来。谢谢!
我认为你最好的选择是学习一些入门工具包。不幸的是,这些工具包几乎都没有提供完整的 JWT 实现——其中许多似乎只完成了一半。
查看:
至于你的 jwt/passport 问题。它们不是相互排斥的。Passport 可以处理 jwt 身份验证,尽管我个人不使用它并直接使用 jwt 库。这并不难 - 您可以在 Relay Starter Kit的服务器文件中看到它。
JWT 令牌通常在标头周围传递,但是已经转向将这些令牌存储在HttpOnly cookie 中(请参阅本文)。该方法的好处是您不需要处理通过 Relay 传递令牌的问题。
我是cyberwombats answer中第一个示例的作者,目前正在开发一个新的通用继电器入门套件。它包含通过 AWS Cognito 进行的身份验证,并且通过 Cognito 进行了 FB 登录,尽管它还没有完全工作。它使用 Cognito 发行的 JWT 令牌。
如果您需要自己实施身份验证工作流程而不是使用 Cognito 或 Auth0 或类似服务,则 Passport 也可能是一种替代方案。您可以实现一个(单独的)身份验证服务器,公开身份验证端点,例如登录等。该服务器可以在 cookie 中设置 JWT,该 cookie 可用于 GraphQL 服务器进行身份验证。
入门工具包仍在开发中(例如,尚未使用刷新令牌),但它已经有点可用了。