我正在尝试将身份验证系统与 Graphql 和与 React 前端通信的 rails 集成,我想知道在生产环境中执行此操作的最佳方法是什么
我知道这可能涉及使用 jwt,但我想知道你会怎么做?
当用户从反应前端登录/注册时,它会将请求发送到对用户进行身份验证的 rails graphql api。然后,当经过身份验证的用户发出请求/查询时,后端首先确保用户可以访问他正在请求的资源,然后将这些资源以 json 格式发送到反应前端
我正在尝试将身份验证系统与 Graphql 和与 React 前端通信的 rails 集成,我想知道在生产环境中执行此操作的最佳方法是什么
我知道这可能涉及使用 jwt,但我想知道你会怎么做?
当用户从反应前端登录/注册时,它会将请求发送到对用户进行身份验证的 rails graphql api。然后,当经过身份验证的用户发出请求/查询时,后端首先确保用户可以访问他正在请求的资源,然后将这些资源以 json 格式发送到反应前端
这是一个有点开放式的问题。可能真的不可能为您的问题写一个具体的答案,但这里什么都没有。
有多种方法可以使用 GraphQL 设置身份验证。首先,重要的是要了解您的用户是否可以在未经身份验证的情况下进行任何 GraphQL 查询。
您是说您正在使用 Rails GraphQL API 对用户进行身份验证。您是使用突变还是使用 REST 调用来执行此操作?如果它只是 REST 并且不允许用户在未经身份验证的情况下使用 GraphQL API,那么当用户未经身份验证时,您可能完全可以阻止用户与 GraphQL API 交互。
否则,通常会检查用户是否经过身份验证,如果是,则将用户数据保留在 GraphQL 查询上下文中。然后,您现在将 - 每个查询 - 用户是否已通过身份验证。
当用户尝试访问他们可能无法看到的任何资源或尝试在未经身份验证的情况下发送突变时,您可以仅以 GraphQL 错误结束整个查询/请求。
由于 GraphQL 错误仍被视为成功HTTP 请求的一部分,因此您可以像往常一样在前端作为 UI 的一部分处理它们。它们将列在响应的通常错误数组中,如 GraphQL 规范中所指定。
关于 JWT,您当然可以使用 JWT 对用户进行身份验证,这需要您将令牌存储在 cookie 中或用户浏览器中的其他位置。通常,您只需在Authorization每个 GraphQL 请求的标头中发送令牌。