Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为使用Rails和React构建的GraphQLAPI构建生产就绪的身份验证系统?_Ruby On Rails_Reactjs_Authentication_Graphql_Production Environment - Fatal编程技术网

Ruby on rails 如何为使用Rails和React构建的GraphQLAPI构建生产就绪的身份验证系统?

Ruby on rails 如何为使用Rails和React构建的GraphQLAPI构建生产就绪的身份验证系统?,ruby-on-rails,reactjs,authentication,graphql,production-environment,Ruby On Rails,Reactjs,Authentication,Graphql,Production Environment,我正在尝试将身份验证系统与Graphql和rails集成在一起,以便与React前端进行通信,我想知道在生产环境中实现此功能的最佳方法是什么 我知道这可能涉及使用jwt,但我想知道您将如何做到这一点 当用户从react前端登录/注册时,它将请求发送到对用户进行身份验证的rails graphql api。然后,当经过身份验证的用户发出请求/查询时,后端首先确保用户可以访问他正在请求的资源,然后将这些资源以json格式发送到react前端这是一个有点开放性的问题。可能不太可能为你的问题写一个具体的

我正在尝试将身份验证系统与Graphql和rails集成在一起,以便与React前端进行通信,我想知道在生产环境中实现此功能的最佳方法是什么

我知道这可能涉及使用jwt,但我想知道您将如何做到这一点


当用户从react前端登录/注册时,它将请求发送到对用户进行身份验证的rails graphql api。然后,当经过身份验证的用户发出请求/查询时,后端首先确保用户可以访问他正在请求的资源,然后将这些资源以json格式发送到react前端这是一个有点开放性的问题。可能不太可能为你的问题写一个具体的答案,但这里什么都没有

使用GraphQL设置身份验证有多种方法。首先,重要的是要了解是否允许您的用户在没有经过身份验证的情况下进行任何GraphQL查询

您是说您正在使用Rails GraphQLAPI对用户进行身份验证。你是用突变还是休息电话?如果只是REST,并且不允许用户在未进行身份验证的情况下使用GraphQLAPI,那么您就可以阻止用户在未经身份验证的情况下与GraphQLAPI进行交互

否则,通常会检查用户是否经过身份验证,如果是,则将用户数据保存在GraphQL查询上下文中。然后,您现在将根据查询确定用户是否经过身份验证

当用户试图访问他们可能看不到的任何资源或试图在未经身份验证的情况下发送变异时,您可以使用GraphQL错误结束整个查询/请求

由于GraphQL错误仍然被认为是成功HTTP请求的一部分,因此您可以像往常一样在前端将其作为UI的一部分进行处理。它们将列在响应的常见错误数组中,如GraphQL规范中所指定

关于JWT,您当然可以使用JWT对用户进行身份验证,这需要您将令牌存储在cookie中或用户浏览器中的其他位置。通常,您只需在每个GraphQL请求中发送授权标头中的令牌