【问题标题】:external api handling in the backend后端的外部 api 处理
【发布时间】:2020-08-31 20:16:41
【问题描述】:

在我的快速服务器上,我使用自己的令牌查询外部 API。当我登录到我的服务器时,我根据登录的用户向外部 API 请求一个令牌,并将外部 API 的令牌保存在我的快速服务器的令牌中。

每个用户根据自己的token从外部api获取不同的数据,对于需要外部api信息的查询,我读取接收到的token,获取外部apitoken通过axios的headers发送,例如:

const LoginUser = (request, response) {
  axios.post('/ExternalApi/auth',request.body)
  .then( data =>{
    const payload = {
      ...
      tokenExternalApi: data.token
    }
    const token = jwt.sign(payload, ...)
    return response.status(200).json(token)
  })
}

const getData = (req, response){
  const tokenFromClient = req.headers.authorization      
  //Function  extract tokenExternalApi from payload Token
  const tokenExternalApi = getTokenExternl(tokenFromClient ) 
  axios.get(`/urlExternalApi`, { headers: 
  { Authorization: tokenExternalApi }}
  ).then(res => {
    return response.status(200).json(res.data)
  })
}

这是管理外部 api 令牌的正确方法还是有更简洁的方法?

【问题讨论】:

    标签: node.js api express axios backend


    【解决方案1】:

    在我个人看来,这似乎是一种干净的方法。

    但请记住,令牌对用户是可见的,因此事实上您的用户可以解码令牌、查看 tokenExternalApi、知道您在后端使用外部 API 并使用该令牌直接调用 ExternalApi,前提是他们有这方面的专业知识。如果您了解这一事实并对此感到满意,那么它就行得通。

    否则,您可以考虑在将令牌发送给用户之前对其进行编码或将其存储在服务器端会话中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-15
      • 2012-08-16
      • 2013-11-08
      • 2017-02-03
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2019-05-13
      相关资源
      最近更新 更多