【问题标题】:Resubmit a Request with updated jwt token使用更新的 jwt 令牌重新提交请求
【发布时间】:2019-02-20 19:22:40
【问题描述】:

我有一个发出 JWT 令牌的端点:

/getJwt

token: {
  "access_token": "kjhfdhglkfhjkjfhgkjfghdkjhgkjdsgfkjhdfkjgkjhfujksfknbvckjfhdbncvujkdhgvbnfjkdghnbv",
  "expires_in": 2592000, // this is equal to 30 days  - I dont have information when it is generated
  "token_type": "Bearer"
}

我的应用程序有各种端点来获取数据,例如:

/getUser  
/getbusinesses

等等……

所有这些端点都需要 JWT 才能访问。 如果 JWT 过期,我会收到以下回复:

{
  "code": "401",
  "message": "Unauthorized",
  "errorList": [{
    "code": "AUTH0007",
    "message": "Malformed JWT token",
    "fieldName": "Authorization"
  }]
}

code:"AUTH0007" 对于 JWT 到期是唯一的。

我能否仅根据从上述端点返回的错误响应向getJwt 发出请求并重新提交失败的请求,还是需要让用户再次触发请求? 我愿意接受建议以实施任何更好的方法。

我成功地为每个请求调用 JWT - 我只想在它失败时进行调用。

简单的“获取请求”

axios.get('/user')
  .then((result) => {
    res.status(200).json(result.data);
  })
  .catch((err) => {
    if (err.response.status === 401 && err.response.data.errorList.code === "AUTH0007") {
      //utill function to get jwt token and update the token in code
      // at this point can I send request back with updated token or do I need to ask user to trigger the new req
    }
  })

【问题讨论】:

    标签: javascript node.js express jwt


    【解决方案1】:

    处理此问题的更好方法是将用户重定向到登录页面(当您收到 401 时),他们可以重新进行身份验证。因此,您可以获取新的 JWT 并允许用户再次触发 API 调用。

    【讨论】:

    • 是的,我确信我可以做到。是否无法根据错误重新提交请求? (我们自己更新令牌 - 更新 jwt 令牌不需要任何用户信息)我的应用程序架构 UI - API1 - API2 API1 的请求需要 jwt 向 API2 发出请求 在 API1 上,我可以在过期后更新 jwt 并重新提交 UI 请求
    • 是的,如果您不希望用户在 JWT 过期后再次登录,您可以这样做。
    • 在获得 401 后,将请求 url 和有效负载推送到数组中,并在获取新的 JWT 后重试那些失败的请求。
    • 会试试那个sghosh。谢谢
    猜你喜欢
    • 2019-10-06
    • 2018-09-29
    • 2022-12-23
    • 2020-07-12
    • 1970-01-01
    • 2017-04-17
    • 2019-07-12
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多