Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Reactjs 在前端使用JWT工作的流程是什么?_Reactjs_Django Rest Framework_Next.js - Fatal编程技术网

Reactjs 在前端使用JWT工作的流程是什么?

Reactjs 在前端使用JWT工作的流程是什么?,reactjs,django-rest-framework,next.js,Reactjs,Django Rest Framework,Next.js,我是web开发新手。我使用Django Rest框架构建了一个后端,并使用JWT处理auth 现在,我想在React中将后端连接到前端。但是,我不知道该怎么做以下是我的问题: 请求和使用JWT访问和刷新令牌的整个流程是什么?例如,我应该在什么时候用我的刷新令牌请求新的访问令牌,以及什么时候请求新的刷新令牌?谢谢 可能有选择,但接下来是简单流程: 您可以从后端进行身份验证、访问和刷新令牌,并将它们保存为cookie 您使用您的访问令牌,直到收到错误401,因为访问令牌已过期 然后尝试使用刷新令牌刷

我是web开发新手。我使用Django Rest框架构建了一个后端,并使用JWT处理auth

现在,我想在React中将后端连接到前端。但是,我不知道该怎么做以下是我的问题


请求和使用JWT访问和刷新令牌的整个流程是什么?例如,我应该在什么时候用我的刷新令牌请求新的访问令牌,以及什么时候请求新的刷新令牌?谢谢

可能有选择,但接下来是简单流程:

  • 您可以从后端进行身份验证、访问和刷新令牌,并将它们保存为cookie
  • 您使用您的访问令牌,直到收到错误401,因为访问令牌已过期
  • 然后尝试使用刷新令牌刷新令牌。如果您在前端使用axios,那么为这种情况编写中间件是一个不错的选择。该中间件将刷新令牌并重复最后一个请求。谷歌应该有食谱
  • 如果成功,您将获得一对新的访问和刷新令牌,并继续您的工作流
  • 如果失败,您需要再次身份验证以获取令牌

  • 可能有多种选择,但接下来是简单流程:

  • 您可以从后端进行身份验证、访问和刷新令牌,并将它们保存为cookie
  • 您使用您的访问令牌,直到收到错误401,因为访问令牌已过期
  • 然后尝试使用刷新令牌刷新令牌。如果您在前端使用axios,那么为这种情况编写中间件是一个不错的选择。该中间件将刷新令牌并重复最后一个请求。谷歌应该有食谱
  • 如果成功,您将获得一对新的访问和刷新令牌,并继续您的工作流
  • 如果失败,您需要再次身份验证以获取令牌

  • 我会迅速作出回应:

  • 请求和使用JWT的流程:
  • 一幅画胜过千言万语

  • 访问令牌不是永久的。无论何时过期,您都必须使用刷新令牌请求新的访问令牌
  • 刷新令牌可能会过期,尽管它们的过期时间通常比访问令牌长得多。为了处理这种情况,我看到的几乎所有实现都会返回一个已知的错误代码“invalid_grant”,您可以在客户端进行检查,并由您的企业进行处理。(例如:显示登录页面…)

  • 我会迅速作出回应:

  • 请求和使用JWT的流程:
  • 一幅画胜过千言万语

  • 访问令牌不是永久的。无论何时过期,您都必须使用刷新令牌请求新的访问令牌
  • 刷新令牌可能会过期,尽管它们的过期时间通常比访问令牌长得多。为了处理这种情况,我看到的几乎所有实现都会返回一个已知的错误代码“invalid_grant”,您可以在客户端进行检查,并由您的企业进行处理。(例如:显示登录页面…)

  • 关于你的问题:

  • 请求和使用JWT访问和刷新令牌的整个流程是什么
    • 我不知道您正在使用关于JWT的what’s package,在github上有太多关于Django JWT的包(pyjwt,djangorestframework_simplejwt,…)。我在我的应用程序中使用
      pyjwt
      ,因为我想在应用程序中自定义身份验证以确保安全
    • 工作流程:
      • 当FE向登录/注册API发送请求时,可以使用JWT生成一个令牌,并在响应中返回该令牌
      • FE将该令牌存储在本地存储器上,使用它发送其他请求
      • BE将通过FE的每个请求获取令牌进行验证。与DRF的
        TokenAuthentication
        相同,我们在使用
        pyjwt
        时必须对其进行定制。将改为验证JWT令牌
  • 我应该在何时使用刷新令牌请求新的访问令牌,以及何时请求新的刷新令牌
    • 您可以在令牌过期后请求新的访问令牌
    • 当您使用
      djangorestframework\u simplejwt
      时,您可以看到刷新令牌,但在我的例子(pyjwt)中,我只需要再次重新生成jwt令牌:)

    关于您的问题:

  • 请求和使用JWT访问和刷新令牌的整个流程是什么
    • 我不知道您正在使用关于JWT的what’s package,在github上有太多关于Django JWT的包(pyjwt,djangorestframework_simplejwt,…)。我在我的应用程序中使用
      pyjwt
      ,因为我想在应用程序中自定义身份验证以确保安全
    • 工作流程:
      • 当FE向登录/注册API发送请求时,可以使用JWT生成一个令牌,并在响应中返回该令牌
      • FE将该令牌存储在本地存储器上,使用它发送其他请求
      • BE将通过FE的每个请求获取令牌进行验证。与DRF的
        TokenAuthentication
        相同,我们在使用
        pyjwt
        时必须对其进行定制。将改为验证JWT令牌
  • 我应该在何时使用刷新令牌请求新的访问令牌,以及何时请求新的刷新令牌
    • 您可以在令牌过期后请求新的访问令牌
    • 当您使用
      djangorestframework\u simplejwt
      时,您可以看到刷新令牌,但在我的例子(pyjwt)中,我只需要再次重新生成jwt令牌:)

      • Ahhh我明白了,这么简单的问题:对于步骤2,如果我在端点
        /endpoint
        上遇到401错误,我是否应该刷新我的令牌并再次ping
        /endpoint
        ?这个问题有意义吗?是的,你说得对。我已经更新了我的答案。啊,我明白了,这么简单的问题:对于步骤2,如果我在端点
        /endpoint
        上出现401错误,我是否应该刷新我的令牌并再次ping
        /endpoint
        ?这个问题有意义吗?是的,你说得对。我已经更新了我的答案