我一直在使用react和relay进行应用程序,现在我一直坚持实现身份验证。
我知道您可以通过GraphQL解析函数中提供的上下文将值传递给每个graphql请求。
我对于传递什么以及如何传递更加困惑。
使用JSON Web令牌,护照还是其他什么更好?我该如何传递用户的标识符?
基本上我要问的是, 什么是最适合接力:jwt,护照,别的?以及如何将其与继电器联系起来。谢谢!
答案 0 :(得分:3)
我认为你最好的选择是研究一些入门套件。不幸的是,这些套件几乎都没有提供完整的JWT实现 - 其中许多似乎只有一半完成了。
退房:
至于你的jwt /护照问题。它们不是相互排斥的。 Passport可以处理jwt auth,虽然我个人不使用它并直接使用jwt库。这不是很难 - 你可以在Relay Starter Kit的server文件中看到它。
JWT令牌通常在标题周围传递,但是已经转移到 HttpOnly cookie中存储这些令牌(请参阅此article)。该方法的优点是你不需要处理使用Relay传递令牌。
答案 1 :(得分:0)
我是网络蜂鸟回答的第一个例子的作者,目前正在开发一个新的universal relay starter kit。它包含通过AWS Cognito进行身份验证,并且通过Cognito进行FB登录,尽管它是not fully working yet。它使用Cognito发布的JWT令牌。
如果您需要自己实施身份验证工作流而不是使用Cognito或Auth0或类似服务,则Passport也可能是替代方案。您可以实现一个(单独的)auth服务器,公开auth端点,如登录等。此服务器可以在cookie中设置JWT,可以在GraphQL服务器上进行身份验证。
入门套件仍在开发中(例如,尚未使用刷新令牌),但它已经可以使用了。